/*
 * @(#)AuctionDemo_Ja.java	1.23  01/08/21
 *
 * Copyright (c) 2004 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

package example.auction.i18n;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Vector;
import java.util.Timer;
import java.util.TimerTask;

public class AuctionDemo_Ja extends MIDlet implements CommandListener {
    Display display;

    public AuctionDemo_Ja() {
        display = Display.getDisplay(this);
    }

    public void destroyApp(boolean unconditional) {
    }

    public void pauseApp() {
    }

    Band band = new Band();

    static final Command BYE_CMD = new Command("\u7d42\u4e86", 
					       Command.STOP, 0);

    static final Command BACK_CMD = new Command("\u623b\u308b", 
						Command.SCREEN, 1);

    static final Command NEXT_CMD = new Command("\u6b21\u3078", 
						Command.SCREEN, 2);

    static final Command MENU_CMD = new Command("\uff92\uff72\uff9d", 
						Command.SCREEN, 2);

    static final Command SAVE_CMD = new Command("\u4fdd\u5b58", 
						Command.SCREEN, 2);

    static final Command SUBMIT_CMD = new Command("\u5165\u672d", 
						  Command.SCREEN, 2);

    static final Command ABOUY_CMD = new Command("\u60c5\u5831", 
						 Command.SCREEN, 30);

    Ticker 	ticker;
    Alert       notImpl, savedMsg, alertMsg;
    Canvas      welcome;
    List        mainMenu, cateMenu, aucMenu, bandList, ticketList, setMenu;
    Form        ticketForm, enterForm, bidForm, submitMsg;
    TextField   enterText, bidText;
    TextBox     addBand;
    Login       login = new Login();
    SetDate     date = new SetDate();
    SetTicker   setTicker = new SetTicker();
    Update      updateInt = new Update();
    UpdateAlert updateAlert = new UpdateAlert();
    Gauge 	submitGauge;
    RmBand      rmBand = new RmBand();

    Timer TimerService;


    public void startApp() {
        notImpl = 
	    new Alert("\u8aa0\u306b\u7533\u3057\u8a33\u3042"
		      + "\u308a\u307e\u305b\u3093",
		      "\u73fe\u5728\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093", 
		      null, null);

        savedMsg = 
	    new Alert(null, 
		      "\u3042\u306a\u305f\u306e\u65b0\u3057\u3044\u8a2d\u5b9a"
		      + "\u306f\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f",
		      null, null);

        alertMsg = 
	    new Alert(null,
		      "\u65b0\u3057\u3044\u901a\u77e5\u5165\u672d\u984d\u304c"
		      + "\u8a2d\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002", 
		      null, null);

        // submitMsg = new Alert(null);
        // submitMsg.append("Submitting bid...");

	submitGauge = new Gauge("", false, 100, 0);
	submitMsg = new Form("\u5165\u672d\u3092\u63d0\u51fa\u4e2d...");
        submitMsg.append(submitGauge);	
	

        ticker = new Ticker("");
        ticker.setString(band.toTickerString(null));

        welcome = new Canvas() {
                Image img = Image.createImage(dukeData, 0, dukeData.length);
                protected void paint(Graphics g) {
                    int x = (getWidth() - img.getWidth()) / 2;
                    int y = (getHeight() - img.getHeight()) / 2;
                    g.drawImage(img, x, y, 
                                Graphics.TOP | Graphics.LEFT);
                }
            };
        welcome.addCommand(MENU_CMD);
        welcome.addCommand(BYE_CMD);
        welcome.setCommandListener(this);
        display.setCurrent(welcome);

        mainMenu = new List("\u30e1\u30a4\u30f3", Choice.IMPLICIT);
        mainMenu.append("\u4f4f\u6240\u9332", null);
        mainMenu.append("\u30aa\u30d7\u30b7\u30e7\u30f3", null);
        mainMenu.append("\u30cb\u30e5\u30fc\u30b9", null);
        mainMenu.append("\u30aa\u30fc\u30af\u30b7\u30e7\u30f3", null);
        mainMenu.append("\u4ea4\u901a\u60c5\u5831", null);
        mainMenu.append("\u30d0\u30f3\u30ad\u30f3\u30b0", null);
        mainMenu.append("\u30b2\u30fc\u30e0", null);
        mainMenu.addCommand(BACK_CMD);
        mainMenu.setCommandListener(this);

        cateMenu = new List("\u30ab\u30c6\u30b4\u30ea", Choice.IMPLICIT);
        cateMenu.append("\u30a2\u30f3\u30c6\u30a3\u30fc\u30af", null);
        cateMenu.append("\u66f8\u7c4d\u3001CD", null);
        cateMenu.append("\u6d0b\u670d\u3001\u30d6\u30e9\u30f3\u30c9", null);
        cateMenu.append("\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf", null);
        cateMenu.append("\u8cb4\u91d1\u5c5e", null);
        cateMenu.append("\u30a4\u30f3\u30c6\u30ea\u30a2", null);
        cateMenu.append("\u30b3\u30a4\u30f3\uff06\u5207\u624b", null);
        cateMenu.append("\u30c1\u30b1\u30c3\u30c8", null);
        cateMenu.append("\u304a\u3082\u3061\u3083", null);
        cateMenu.addCommand(BACK_CMD);
        cateMenu.setCommandListener(this);

        aucMenu = new List("\u30c1\u30b1\u30c3\u30c8", Choice.IMPLICIT);
        aucMenu.append("\u51fa\u54c1\u30ea\u30b9\u30c8", null);
        aucMenu.append("\u5165\u672d\u3059\u308b", null);
        aucMenu.append("\u5165\u672d\u984d\u901a\u77e5\u8a2d\u5b9a", null);
        aucMenu.append("\u8a2d\u5b9a", null);
        aucMenu.addCommand(BACK_CMD);
        aucMenu.setCommandListener(this);
        aucMenu.setTicker(ticker);

        bandList = new List("\u30a2\u30fc\u30c6\u30a3\u30b9\u30c8",
			    Choice.IMPLICIT);
        bandList.addCommand(BACK_CMD);
        bandList.setCommandListener(this);
        bandList.setTicker(ticker);
        String[] list = band.getList();
        for (int i = 0; i < list.length; i++) {
            bandList.append(list[i], null);
        }

        ticketList = new List("dummy", Choice.IMPLICIT);
        ticketList.addCommand(BACK_CMD);
        ticketList.setCommandListener(this);

        ticketForm = new Form("dummy");
        ticketForm.append("dummy");
        ticketForm.addCommand(BACK_CMD);
        ticketForm.addCommand(MENU_CMD);
        ticketForm.setCommandListener(this);

        enterText = new TextField("\u901a\u77e5\u5165\u672d\u984d", 
				  "", 10, TextField.NUMERIC);

        enterForm = new Form("\u8a2d\u5b9a");
        enterForm.append("\u5165\u672d\u984d\u304c\u4ee5\u4e0b"
			 + "\u306e\u8a2d\u5b9a"
			 +"\u91d1\u984d\u306a\u308b\u3068\u304a\u77e5\u3089"
			 +"\u305b\u3057\u307e\u3059:");
        enterForm.append(enterText);
        enterForm.addCommand(BACK_CMD);
        enterForm.addCommand(SAVE_CMD);
        enterForm.setCommandListener(this);

        bidText = new TextField("", "", 10, TextField.NUMERIC);

        bidForm = new Form("dummy");
        bidForm.append("dummy");
        bidForm.append(bidText);
        bidForm.addCommand(BACK_CMD);
        bidForm.addCommand(NEXT_CMD);
        bidForm.setCommandListener(this);

        setMenu = new List("\u8a2d\u5b9a", Choice.IMPLICIT);
        setMenu.append("\u65e5\u4ed8\u8a2d\u5b9a", null);
        setMenu.append("\u30c6\u30ed\u30c3\u30d7", null);
        setMenu.append("\u30a2\u30e9\u30fc\u30e0\u9593\u9694", 
		       null);
        setMenu.append("\u30a2\u30fc\u30c6\u30a3\u30b9\u30c8\u8ffd\u52a0",
		       null);
        setMenu.append("\u30a2\u30fc\u30c6\u30a3\u30b9\u30c8\u524a\u9664", 
		       null);
        setMenu.addCommand(BACK_CMD);
        setMenu.setCommandListener(this);
        setMenu.setTicker(ticker);
        
        addBand = 
	    new TextBox("\u8ffd\u52a0\u3059\u308b\u30a2\u30fc\u30c6\u30a3"
			+ "\u30b9\u30c8\u3092\u30b3\u30f3\u30de(,)\u3067\u533a"
			+ "\u5207\u3063\u3066\u5165\u529b\u3057\u3066\u304f"
			+ "\u3060\u3055\u3044:", "", 100, TextField.ANY);
        addBand.addCommand(BACK_CMD);
        addBand.addCommand(SAVE_CMD);
        addBand.setCommandListener(this);
    }

    int chooseBandType = 0;

    public void commandAction(Command c, Displayable s) {
        if (s instanceof Canvas) {
            Canvas obj = (Canvas) s;
            if (obj == welcome) {
                if (c == MENU_CMD) { 
                    display.setCurrent(mainMenu);
                } else if (c == BYE_CMD) {
		    notifyDestroyed();
                }
            }
        } else if (s instanceof List) {
            List obj = (List) s;
            if (obj == mainMenu) {
                if (c == List.SELECT_COMMAND) {
                    int idx = obj.getSelectedIndex();
                    if (idx == 3) {
                        display.setCurrent(cateMenu);
                    } else {
                        display.setCurrent(notImpl);
                    }
                } else if (c == BACK_CMD) {
                    display.setCurrent(welcome);
                }
            } else if (obj == cateMenu) {
                if (c == List.SELECT_COMMAND) {
                    int idx = obj.getSelectedIndex();
                    if (idx == 7) {
                        display.setCurrent(aucMenu);
                    } else {
                        display.setCurrent(notImpl);
                    }
                } else if (c == BACK_CMD) {
                    display.setCurrent(mainMenu);
                }
            } else if (obj == aucMenu) {
                if (c == List.SELECT_COMMAND) {
                    int idx = obj.getSelectedIndex();
                    switch (idx) {
                    case 0:
                        chooseBandType = 0;
                        display.setCurrent(bandList);
                        break;
                    case 1:
                        chooseBandType = 1;
                        display.setCurrent(bandList);
                        break;
                    case 2:
                        chooseBandType = 2;
                        display.setCurrent(bandList);
                        break;
                    case 3:
                        display.setCurrent(setMenu);
                        break;
                    case 4:
                        example.About.showAbout(display);
                        break;
                    }
                } else if (c == BACK_CMD) {
                    display.setCurrent(cateMenu);
                }
            } else if (obj == bandList) {
                if (c == List.SELECT_COMMAND) {
                    int idx = obj.getSelectedIndex();
                    String bandName = band.getName(idx);
                    ticketList.setTitle(bandName);
                    reconstructList(ticketList, band.getTicketList(bandName));
                    display.setCurrent(ticketList);
                } else if (c == BACK_CMD) {
                    display.setCurrent(aucMenu);
                }
            } else if (obj == ticketList) {
                if (c == List.SELECT_COMMAND) {
                    int idx = obj.getSelectedIndex();
                    String bandName = ticketList.getTitle();
                    if (chooseBandType == 0) {
                        ticketForm.setTitle(bandName);
                        ticketForm.delete(0);
                        ticketForm.append(band.getTicketData(bandName, 
                                                                   idx));
                        display.setCurrent(ticketForm);
                    } else if (chooseBandType == 1) {
                        login.setID(bandName, band.getTicketID(bandName, idx));
                        bidForm.setTitle(null);
                        StringItem item = 
                            new StringItem("",
                                           band.getTicketBidTitle(bandName, 
                                                                  idx));
                        bidForm.set(0, item);
                        display.setCurrent(bidForm);
                    } else if (chooseBandType == 2) {
                        display.setCurrent(enterForm);
                    }
                } else if (c == BACK_CMD) {
                    display.setCurrent(bandList);
                }
            } else if (obj == setMenu) {
                if (c == List.SELECT_COMMAND) {
                    int idx = obj.getSelectedIndex();
                    switch (idx) {
                    case 0:
                        date.setDate();
                        display.setCurrent(date);
                        break;
                    case 1:
                        display.setCurrent(setTicker);
                        break;
                    case 2:
                        display.setCurrent(updateInt);
                        break;
                    case 3:
                        display.setCurrent(addBand);
                        break;
                    case 4:
                        display.setCurrent(rmBand);
                        break;
                    }
                } else if (c == BACK_CMD) {
                    display.setCurrent(aucMenu);
                }
            }
        } else if (s instanceof Form) {
            Form obj = (Form) s;
            if (obj == ticketForm) {
                if (c == BACK_CMD) {
                    display.setCurrent(ticketList);
                } else if (c == MENU_CMD) {
                    display.setCurrent(aucMenu);
                }
            } else if (obj == bidForm) {
                if (c == BACK_CMD) {
                    display.setCurrent(ticketList);
                } else if (c == NEXT_CMD) {
                    login.setBid(ticketList.getTitle(), bidText.getString());
                    display.setCurrent(login);
                }
            } else if (obj == enterForm) {
                if (c == BACK_CMD) {
                    display.setCurrent(ticketList);
                } else if (c == SAVE_CMD) {
                    updateAlert.set(ticketList.getTitle(), 
                                    enterText.getString());
                    display.setCurrent(alertMsg, aucMenu);
                }
            }
        } else if (s instanceof TextBox) {
            TextBox obj = (TextBox) s;
            if (obj == addBand) {
                if (c == BACK_CMD) {
                    display.setCurrent(setMenu);
                } else if (c == SAVE_CMD) {
                    updateBandList(addBand.getString());
                    display.setCurrent(savedMsg, setMenu);
                }
            }
        }
    }

    class Login extends Form implements CommandListener {
        TextField id = new TextField("", "", 10, TextField.ANY);
        TextField pd = new TextField("", "", 10, 
                                     (TextField.NUMERIC|TextField.PASSWORD));
        Form confirm = new Form("\u78ba\u8a8d");
        Form notice = new Form("\u901a\u77e5");

        Login() {
            super(null);
            append("\u30e6\u30fc\u30b6\u30fcID:");
            append(id);
            append("\u30d1\u30b9\u30ef\u30fc\u30c9:");
            append(pd);
            addCommand(BACK_CMD);
            addCommand(NEXT_CMD);
            setCommandListener(this);

            confirm.append("dummy");
            confirm.addCommand(BACK_CMD);
            confirm.addCommand(SUBMIT_CMD);
            confirm.setCommandListener(this);

            notice.append("\u3042\u306a\u305f\u306e\u5165\u672d\u306f\n");
            notice.append("\u9818\u53ce\u3055\u308c\u307e\u3057\u305f\n");
            notice.append("\u78ba\u8a8d\u756a\u53f7:\n");
            notice.append("12-B455-31");
            notice.addCommand(BACK_CMD);
            notice.addCommand(MENU_CMD);
            notice.setCommandListener(this);
        }

        String band, bid, ticketID;

        void setBid(String band, String bid) {
            this.band = band;
            this.bid = bid;
        }

        void setID(String band, String ticketID) {
            this.band = band;
            this.ticketID = ticketID;
        }

        public void commandAction(Command c, Displayable s) {
            if (s instanceof Form) {
                Form obj = (Form) s;
                if (obj == this) {
                    if (c == BACK_CMD) {
                        display.setCurrent(bidForm);
                    } else if (c == NEXT_CMD) {
                        String str = "\u756a\u53f7: " + ticketID + "\n" +
                            band + "\n" + 
                            "\u5165\u672d\u984d:\n" + 
                            bid + "\u5186";
                        confirm.delete(0);
                        confirm.append(str);
                        display.setCurrent(confirm);
                    }
                } else if (obj == confirm) {
                    if (c == BACK_CMD) {
                        display.setCurrent(bidForm);
                    } else if (c == SUBMIT_CMD) {
                        // display.setCurrent(submitMsg, notice);
			TimerService = new Timer();
			TimerClient timerClient = new TimerClient();
			TimerService.schedule(timerClient, 0, 1000);	
                        display.setCurrent(submitMsg);
                    }
                } else if (obj == notice) {
                    if (c == BACK_CMD) {
                        display.setCurrent(bidForm);
                    } else if (c == MENU_CMD) {
                        display.setCurrent(aucMenu);
                    }
                }
            }
        }
        private class TimerClient extends TimerTask {
            public final void run() {
	 	if (submitGauge.getValue() == submitGauge.getMaxValue()) {
			TimerService.cancel();
			submitGauge.setValue(0);
			display.setCurrent(notice);	
		} else {
			submitGauge.setValue(submitGauge.getValue()+10);
		}	
            }
	}

    }

    class SetDate extends Form implements CommandListener {
        DateField dateTimeItem = new DateField(null, DateField.DATE_TIME);

        SetDate() {
            super(null);
            append("\u5165\u672d\u3092\u884c\u3046\u524d\u306b\u6642"
		   + "\u523b\u3092\u3053\u306e\u30b9\u30af\u30ea\u30fc"
		   + "\u30f3\u3067\u8a2d\u5b9a\u3067\u304d\u307e\u3059\n");
            append(dateTimeItem);
            addCommand(BACK_CMD);
            setCommandListener(this);
        }

        void setDate() {
            dateTimeItem.setDate(new java.util.Date());
        }

        public void commandAction(Command c, Displayable s) {
            if (s instanceof Form) {
                Form obj = (Form) s;
                if (obj == this) {
                    if (c == BACK_CMD) {
                        display.setCurrent(setMenu);
                    }
                }
            }
        }
    }

    class SetTicker extends Form implements CommandListener {
        ChoiceGroup cg;
        SetTicker() {
            super("\u30c6\u30ed\u30c3\u30d7\u8a2d\u5b9a");
            cg = new ChoiceGroup("Choice Group", Choice.MULTIPLE);
            cg.append("\u304a\u6c17\u306b\u5165\u308a", null);
            cg.append("\u30dd\u30c3\u30d7", null);
            cg.append("\u30ed\u30c3\u30af", null);
            cg.append("\u30af\u30e9\u30b7\u30c3\u30af", null);
            cg.append("\u30b8\u30e3\u30ba", null);
            cg.append("\u305d\u306e\u4ed6", null);
            append(cg);
            cg.setSelectedIndex(3, true);
            addCommand(BACK_CMD);
            addCommand(SAVE_CMD);
            setCommandListener(this);
        }
        boolean[] ret = new boolean[6];
        public void commandAction(Command c, Displayable s) {
            if (c == SAVE_CMD) {
                cg.getSelectedFlags(ret);
                String str = band.toTickerString(ret);
                if (str != null) {
                    ticker.setString(str);
                }
                display.setCurrent(savedMsg, setMenu);
            } else if (c == BACK_CMD) {
                display.setCurrent(setMenu);
            }
        }
    }

    class Update extends Form implements CommandListener {
        Timer timerService = new Timer();
        ChoiceGroup cg;
        Update() {
            super("\u9593\u9694");
            cg = new ChoiceGroup("Choice Group", Choice.EXCLUSIVE);
            cg.append("\u9023\u7d9a", null);
            cg.append("15 \u5206", null);
            cg.append("30 \u5206", null);
            cg.append("1 \u6642\u9593", null);
            cg.append("3 \u6642\u9593", null);
            append(cg);
            addCommand(BACK_CMD);
            addCommand(SAVE_CMD);
            setCommandListener(this);
        }
        public void commandAction(Command c, Displayable s) {
            if (c == SAVE_CMD) {
                if (updateAlert.hasDataToUpdate()) {
                    int idx = cg.getSelectedIndex();
                    TimerTask timerClient = new TimerTask() {
                        public final void run() {
                            updateAlert.show();
                        }
                    };
                    switch (idx) {
                    case 0:
                        timerService.schedule(timerClient, 3000);
                        break;
                    case 1:
                        timerService.schedule(timerClient, 3000);
                        break;
                    case 2:
                        timerService.schedule(timerClient, 3000);
                        break;
                    case 3:
                        timerService.schedule(timerClient, 3000);
                        break;
                    case 4:
                        timerService.schedule(timerClient, 3000);
                        break;
                    }
                }
                display.setCurrent(savedMsg, setMenu);
            } else if (c == BACK_CMD) {
                display.setCurrent(setMenu);
            }
        }
    }

    class UpdateAlert implements CommandListener {
        String band = "", bid = "";
        Form f = new Form("\u901a\u77e5");
        UpdateAlert() {
            f.append("dummy");
            f.addCommand(BACK_CMD);
            f.setCommandListener(this);
        }
        void set(String band, String bid) {
            this.band = band;
            this.bid = bid;
        }
        boolean hasDataToUpdate() {
            return ((band != null) && (band != "") &&
                    (bid != null) && (bid != ""));
        }
        void show() {
            // no-op if band & bid aren't set
            if (hasDataToUpdate()) {
                f.delete(0);
                String s = new String(band + "\n" + 
                                  "\u306e\u5165\u672d\u984d\u304c\n" +
                                  bid + "\u5186\u306b\n" +
                                  "\u306a\u308a\u307e\u3057\u305f");
                f.append(s);
                display.setCurrent(f);
            }
        }
        public void commandAction(Command c, Displayable s) {
            if (c == BACK_CMD) {
                display.setCurrent(setMenu);
            }
        }
    }

    void updateBandList(String list) {
        if (list.length() == 0) {
            return;
        }

        Vector vec = new Vector();
        int fidx = 0;
        while (true) {
            int idx = list.indexOf(',', fidx);
            if (idx == -1) {
                vec.addElement(list.substring(fidx));
                break;
            }
            vec.addElement(list.substring(fidx, idx));
            fidx = idx + 1;
        }

        for (int i = 0; i < vec.size(); i++) {
            String str = (String)vec.elementAt(i);
            int j = 0;
            int len = str.length();
            for (; j < len; j++) {
                if (str.charAt(j) != ' ') {
                    break;
                }
            }
            if (j == len) {
                continue;
            }
            if (j == 0) {
                band.add(str);
            } else {
                band.add(str.substring(j));
            }
        }
        reconstructList(bandList, band.getList());
        rmBand.reset();
    }

    class RmBand extends Form implements CommandListener {
        ChoiceGroup cg;
        RmBand() {
            super("\u524a\u9664");
            cg = new ChoiceGroup("Choice Group", Choice.MULTIPLE);
            String[] list = band.getList();
            for (int i = 0; i < list.length; i++) {
                cg.append(list[i], null);
            }
            append(cg);
            addCommand(BACK_CMD);
            addCommand(SAVE_CMD);
            setCommandListener(this);
        }
        public void commandAction(Command c, Displayable s) {
            if (c == SAVE_CMD) {
                boolean[] ret = new boolean[cg.size()];
                cg.getSelectedFlags(ret);
                removeBandList(ret);
                display.setCurrent(savedMsg, setMenu);
            } else if (c == BACK_CMD) {
                display.setCurrent(setMenu);
            }
        }
        void reset() {
            reconstructList(cg, band.getList());
        }
        void removeBandList(boolean[] t) {
            int i = t.length;
            while (--i >= 0) {
                if (t[i]) {
                    band.remove(i);
                }
            }
            reconstructList(bandList, band.getList());
            reconstructList(cg, band.getList());
        }
    }

    void reconstructForm(Form form, String title, String items) {
        form.setTitle(title);
        int num = form.size();
        while (--num >= 0) {
            form.delete(num);
        }
        form.append(items);
    }

    void reconstructList(Choice list, String[] items) {
        int num = list.size();
        while (--num >= 0) {
            list.delete(num);
        }
        for (int i = 0; i < items.length; i++) {
            list.append(items[i], null);
        }
        list.setSelectedIndex(0, true);
    }

    static byte dukeData[] = {
        (byte)0x89, (byte)0x50, (byte)0x4e, (byte)0x47, 
        (byte)0x0d, (byte)0x0a, (byte)0x1a, (byte)0x0a, 
        (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x0d, 
        (byte)0x49, (byte)0x48, (byte)0x44, (byte)0x52, 
        (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x4b, 
        (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x2f, 
        (byte)0x08, (byte)0x02, (byte)0x00, (byte)0x00, 
        (byte)0x00, (byte)0x24, (byte)0x49, (byte)0xa0, 
        (byte)0xf1, (byte)0x00, (byte)0x00, (byte)0x0a, 
        (byte)0xfc, (byte)0x49, (byte)0x44, (byte)0x41, 
        (byte)0x54, (byte)0x78, (byte)0x9c, (byte)0xbd, 
        (byte)0x5a, (byte)0x3f, (byte)0x88, (byte)0xe3, 
        (byte)0x46, (byte)0x17, (byte)0x7f, (byte)0x9b, 
        (byte)0xef, (byte)0x02, (byte)0x23, (byte)0xd8, 
        (byte)0x80, (byte)0xa6, (byte)0x38, (byte)0x90, 
        (byte)0x8a, (byte)0x04, (byte)0x54, (byte)0x24, 
        (byte)0x20, (byte)0x43, (byte)0x02, (byte)0x52, 
        (byte)0xb7, (byte)0x2a, (byte)0x9d, (byte)0x4e, 
        (byte)0xdb, (byte)0xd9, (byte)0x45, (byte)0x60, 
        (byte)0x5d, (byte)0xfa, (byte)0xeb, (byte)0x7c, 
        (byte)0x45, (byte)0x60, (byte)0x5d, (byte)0xba, 
        (byte)0xf8, (byte)0x0a, (byte)0x97, (byte)0x36, 
        (byte)0xa4, (byte)0xb0, (byte)0xbb, (byte)0x55, 
        (byte)0x13, (byte)0xf0, (byte)0x76, (byte)0xda, 
        (byte)0xce, (byte)0xee, (byte)0x4e, (byte)0x29, 
        (byte)0x02, (byte)0x12, (byte)0xa4, (byte)0x90, 
        (byte)0x8a, (byte)0x03, (byte)0xab, (byte)0x38, 
        (byte)0xb8, (byte)0x29, (byte)0xae, (byte)0x18, 
        (byte)0xc1, (byte)0x2d, (byte)0x68, (byte)0x8a, 
        (byte)0x80, (byte)0x5e, (byte)0xb1, (byte)0x61, 
        (byte)0xbf, (byte)0xe2, (byte)0xdd, (byte)0x2a, 
        (byte)0x3a, (byte)0xdb, (byte)0xeb, (byte)0xdb, 
        (byte)0xf5, (byte)0xde, (byte)0xdd, (byte)0x2b, 
        (byte)0x96, (byte)0xb5, (byte)0xac, (byte)0xf9, 
        (byte)0xf3, (byte)0x9b, (byte)0x79, (byte)0xf3, 
        (byte)0x7b, (byte)0xbf, (byte)0xf7, (byte)0xc6, 
        (byte)0x47, (byte)0xe5, (byte)0x6d, (byte)0xc9, 
        (byte)0x40, (byte)0x07, (byte)0x40, (byte)0xf8, 
        (byte)0xcc, (byte)0x26, (byte)0x0b, (byte)0x25, 
        (byte)0xc4, (byte)0xba, (byte)0x65, (byte)0xbb, 
        (byte)0xba, (byte)0xce, (byte)0x3e, (byte)0xf7, 
        (byte)0x58, (byte)0x77, (byte)0xc6, (byte)0x10, 
        (byte)0xd4, (byte)0x33, (byte)0x1d, (byte)0x74, 
        (byte)0xfa, (byte)0xf0, (byte)0xb9, (byte)0x47, 
        (byte)0xcb, (byte)0xe2, (byte)0x78, (byte)0xb5, 
        (byte)0x5a, (byte)0xcd, (byte)0x66, (byte)0x1e, 
        (byte)0xfb, (byte)0xfc, (byte)0x63, (byte)0xd5, 
        (byte)0xc6, (byte)0x40, (byte)0x7f, (byte)0x86, 
        (byte)0x80, (byte)0x5f, (byte)0x60, (byte)0xc8, 
        (byte)0xa2, (byte)0x28, (byte)0xe6, (byte)0xf3, 
        (byte)0x39, (byte)0x00, (byte)0x30, (byte)0xf6, 
        (byte)0xe5, (byte)0xe0, (byte)0x01, (byte)0x00, 
        (byte)0x02, (byte)0x7e, (byte)0xf5, (byte)0x65, 
        (byte)0x46, (byte)0x8a, (byte)0xe3, (byte)0x38, 
        (byte)0x8a, (byte)0x22, (byte)0xc6, (byte)0x18, 
        (byte)0xe2, (byte)0x67, (byte)0x3f, (byte)0x0e, 
        (byte)0x1b, (byte)0xf6, (byte)0x25, (byte)0x10, 
        (byte)0x16, (byte)0x45, (byte)0x31, (byte)0x99, 
        (byte)0x4c, (byte)0x00, (byte)0x00, (byte)0x11, 
        (byte)0x95, (byte)0x52, (byte)0xfb, (byte)0x5f, 
        (byte)0xae, (byte)0x5f, (byte)0x40, (byte)0xc4, 
        (byte)0x3c, (byte)0xcf, (byte)0x3f, (byte)0xfa, 
        (byte)0xfe, (byte)0x47, (byte)0xed, (byte)0xd3, 
        (byte)0x23, (byte)0x54, (byte)0x4a, (byte)0x6d, 
        (byte)0x4c, (byte)0x2b, (byte)0x0c, (byte)0xc3, 
        (byte)0x24, (byte)0x49, (byte)0x00, (byte)0x40, 
        (byte)0x4a, (byte)0x29, (byte)0xa5, (byte)0xdc, 
        (byte)0xdf, (byte)0x3c, (byte)0x4d, (byte)0x53, 
        (byte)0x44, (byte)0x2c, (byte)0x8a, (byte)0xe2, 
        (byte)0xea, (byte)0xea, (byte)0x4a, (byte)0x08, 
        (byte)0xa1, (byte)0xeb, (byte)0xfa, (byte)0x13, 
        (byte)0xe7, (byte)0xf3, (byte)0xe9, (byte)0x11, 
        (byte)0xce, (byte)0xe7, (byte)0xf3, (byte)0x28, 
        (byte)0x8a, (byte)0xea, (byte)0x8f, (byte)0x42, 
        (byte)0x88, (byte)0xe9, (byte)0x74, (byte)0x4a, 
        (byte)0xff, (byte)0x4b, (byte)0x29, (byte)0x85, 
        (byte)0x10, (byte)0x7b, (byte)0xda, (byte)0xe6, 
        (byte)0x79, (byte)0x9e, (byte)0x24, (byte)0x89, 
        (byte)0x94, (byte)0x72, (byte)0xb1, (byte)0x58, 
        (byte)0x84, (byte)0x61, (byte)0xc8, (byte)0x39, 
        (byte)0x7f, (byte)0xfa, (byte)0x7c, (byte)0x3e, 
        (byte)0x3d, (byte)0xc2, (byte)0xf5, (byte)0x7a, 
        (byte)0xdd, (byte)0x5c, (byte)0xf8, (byte)0xcb, 
        (byte)0xcb, (byte)0xcb, (byte)0x1a, (byte)0x95, 
        (byte)0x52, (byte)0x2a, (byte)0xcf, (byte)0xf3, 
        (byte)0x3d, (byte)0x6d, (byte)0xb3, (byte)0x2c, 
        (byte)0x13, (byte)0x42, (byte)0x70, (byte)0xce, 
        (byte)0x4d, (byte)0xd3, (byte)0xec, (byte)0xf7, 
        (byte)0xfb, (byte)0xb6, (byte)0x6d, (byte)0x7f, 
        (byte)0x82, (byte)0x09, (byte)0x55, (byte)0xb7, 
        (byte)0xd5, (byte)0xed, (byte)0xd3, (byte)0xac, 
        (byte)0xaa, (byte)0xaa, (byte)0x30, (byte)0x0c, 
        (byte)0x2f, (byte)0x2e, (byte)0x2e, (byte)0xd6, 
        (byte)0xeb, (byte)0xf5, (byte)0x9b, (byte)0x37, 
        (byte)0x6f, (byte)0xfa, (byte)0xfd, (byte)0x7e, 
        (byte)0x55, (byte)0xbd, (byte)0xef, (byte)0xf3, 
        (byte)0xcd, (byte)0x9b, (byte)0x37, (byte)0x1b, 
        (byte)0x6e, (byte)0xe6, (byte)0xfb, (byte)0x7e, 
        (byte)0x59, (byte)0x96, (byte)0x7b, (byte)0xba, 
        (byte)0x4a, (byte)0xd3, (byte)0xf4, (byte)0x89, 
        (byte)0xf3, (byte)0xf9, (byte)0xa0, (byte)0xc3, 
        (byte)0xdb, (byte)0xea, (byte)0xd9, (byte)0xd3, 
        (byte)0xd7, (byte)0x68, (byte)0xb1, (byte)0x58, 
        (byte)0x8c, (byte)0x46, (byte)0x23, (byte)0xcb, 
        (byte)0xb2, (byte)0xf2, (byte)0x3c, (byte)0x97, 
        (byte)0x52, (byte)0x5a, (byte)0x96, (byte)0xc5, 
        (byte)0x18, (byte)0x13, (byte)0x42, (byte)0x58, 
        (byte)0x96, (byte)0x35, (byte)0x9f, (byte)0xcf, 
        (byte)0x37, (byte)0xce, (byte)0x64, (byte)0x9a, 
        (byte)0xa6, (byte)0x69, (byte)0x9a, (byte)0xb6, 
        (byte)0xdb, (byte)0xed, (byte)0x9d, (byte)0x5d, 
        (byte)0x31, (byte)0xc6, (byte)0x4c, (byte)0xd3, 
        (byte)0x14, (byte)0x42, (byte)0xd0, (byte)0x6e, 
        (byte)0x97, (byte)0x65, (byte)0xc9, (byte)0x18, 
        (byte)0xeb, (byte)0x76, (byte)0xbb, (byte)0x4f, 
        (byte)0x39, (byte)0x8d, (byte)0x4f, (byte)0x45, 
        (byte)0xa8, (byte)0x94, (byte)0x0a, (byte)0x82, 
        (byte)0x80, (byte)0x73, (byte)0x7e, (byte)0x7a, 
        (byte)0x7a, (byte)0x0a, (byte)0x00, (byte)0x52, 
        (byte)0x4a, (byte)0xcf, (byte)0xf3, (byte)0x08, 
        (byte)0xaa, (byte)0xa6, (byte)0x69, (byte)0x41, 
        (byte)0x10, (byte)0x6c, (byte)0xbc, (byte)0x5f, 
        (byte)0x14, (byte)0x45, (byte)0x92, (byte)0x24, 
        (byte)0xf7, (byte)0x21, (byte)0x44, (byte)0xc4, 
        (byte)0xc5, (byte)0x62, (byte)0x91, (byte)0xe7, 
        (byte)0x39, (byte)0x63, (byte)0x4c, (byte)0xd7, 
        (byte)0x75, (byte)0xce, (byte)0x79, (byte)0x96, 
        (byte)0x65, (byte)0x45, (byte)0x51, (byte)0x9c, 
        (byte)0x9c, (byte)0x9c, (byte)0xb8, (byte)0xae, 
        (byte)0x7b, (byte)0x18, (byte)0xce, (byte)0xa7, 
        (byte)0x22, (byte)0x24, (byte)0x42, (byte)0x77, 
        (byte)0x1c, (byte)0xc7, (byte)0xf7, (byte)0x7d, 
        (byte)0x44, (byte)0x94, (byte)0x52, (byte)0xda, 
        (byte)0xb6, (byte)0x4d, (byte)0x67, (byte)0x69, 
        (byte)0xb1, (byte)0x58, (byte)0xec, (byte)0xe4, 
        (byte)0xfa, (byte)0xe5, (byte)0x72, (byte)0x79, 
        (byte)0x76, (byte)0x76, (byte)0x66, (byte)0x59, 
        (byte)0xd6, (byte)0xf6, (byte)0x57, (byte)0x41, 
        (byte)0x10, (byte)0x44, (byte)0x51, (byte)0xe4, 
        (byte)0x79, (byte)0x9e, (byte)0x61, (byte)0x18, 
        (byte)0x96, (byte)0x65, (byte)0x69, (byte)0x9a, 
        (byte)0x66, (byte)0x59, (byte)0x96, (byte)0x10, 
        (byte)0x22, (byte)0xcf, (byte)0x73, (byte)0xce, 
        (byte)0xb9, (byte)0xe3, (byte)0x38, (byte)0x07, 
        (byte)0xcc, (byte)0xf0, (byte)0x49, (byte)0x08, 
        (byte)0xb3, (byte)0x2c, (byte)0x5b, (byte)0xaf, 
        (byte)0xd7, (byte)0xfd, (byte)0x7e, (byte)0x9f, 
        (byte)0xb0, (byte)0x49, (byte)0x29, (byte)0x19, 
        (byte)0x63, (byte)0x59, (byte)0x96, (byte)0xd9, 
        (byte)0xb6, (byte)0xcd, (byte)0x39, (byte)0x27, 
        (byte)0x11, (byte)0xb3, (byte)0x6d, (byte)0x49, 
        (byte)0x92, (byte)0x24, (byte)0x49, (byte)0xb2, 
        (byte)0x8d, (byte)0x30, (byte)0xcf, (byte)0x73, 
        (byte)0x21, (byte)0x84, (byte)0xef, (byte)0xfb, 
        (byte)0xa6, (byte)0x69, (byte)0x02, (byte)0x40, 
        (byte)0x51, (byte)0x14, (byte)0x00, (byte)0x40, 
        (byte)0x8e, (byte)0x0a, (byte)0x4f, (byte)0x10, 
        (byte)0x43, (byte)0x87, (byte)0x73, (byte)0xa9, 
        (byte)0x10, (byte)0x22, (byte)0x8e, (byte)0x63, 
        (byte)0x44, (byte)0x64, (byte)0x8c, (byte)0x19, 
        (byte)0x86, (byte)0x21, (byte)0xa5, (byte)0x4c, 
        (byte)0x92, (byte)0xc4, (byte)0xf3, (byte)0x3c, 
        (byte)0xc6, (byte)0x18, (byte)0x63, (byte)0x2c, 
        (byte)0x4d, (byte)0xd3, (byte)0x3d, (byte)0x81, 
        (byte)0x21, (byte)0x08, (byte)0x02, (byte)0x02, 
        (byte)0x50, (byte)0x1b, (byte)0x22, (byte)0xc6, 
        (byte)0x71, (byte)0x4c, (byte)0xb0, (byte)0x69, 
        (byte)0xb1, (byte)0xca, (byte)0xb2, (byte)0x2c, 
        (byte)0xcb, (byte)0xb2, (byte)0x7e, (byte)0x81, 
        (byte)0x60, (byte)0xef, (byte)0x31, (byte)0x54, 
        (byte)0x8a, (byte)0xa8, (byte)0x78, (byte)0xe3, 
        (byte)0xf9, (byte)0xe1, (byte)0x08, (byte)0x69, 
        (byte)0x8a, (byte)0x24, (byte)0xc4, (byte)0xf2, 
        (byte)0x3c, (byte)0xa7, (byte)0xb3, (byte)0x67, 
        (byte)0xdb, (byte)0xb6, (byte)0xef, (byte)0xfb, 
        (byte)0xc4, (byte)0x31, (byte)0x7b, (byte)0xda, 
        (byte)0x46, (byte)0x51, (byte)0xb4, (byte)0x5c, 
        (byte)0x2e, (byte)0x9b, (byte)0x4f, (byte)0x18, 
        (byte)0x63, (byte)0x9e, (byte)0xe7, (byte)0xed, 
        (byte)0x6f, (byte)0xb2, (byte)0xe1, (byte)0xf3, 
        (byte)0x88, (byte)0xf8, (byte)0x81, (byte)0x06, 
        (byte)0x64, (byte)0x0c, (byte)0x00, (byte)0x84, 
        (byte)0x10, (byte)0xf4, (byte)0xb0, (byte)0xd6, 
        (byte)0x4f, (byte)0x07, (byte)0x7a, (byte)0xa9, 
        (byte)0x52, (byte)0x8a, (byte)0x56, (byte)0x8b, 
        (byte)0xf6, (byte)0xd0, (byte)0xb6, (byte)0x6d, 
        (byte)0x44, (byte)0xcc, (byte)0xb2, (byte)0x8c, 
        (byte)0x7a, (byte)0x2f, (byte)0x8a, (byte)0xa2, 
        (byte)0x19, (byte)0xf4, (byte)0x77, (byte)0xda, 
        (byte)0x74, (byte)0x3a, (byte)0x3d, (byte)0x3d, 
        (byte)0x3d, (byte)0x35, (byte)0x0c, (byte)0xa3, 
        (byte)0x31, (byte)0xc3, (byte)0x1d, (byte)0x7e, 
        (byte)0x48, (byte)0xec, (byte)0xca, (byte)0x39, 
        (byte)0x67, (byte)0x8c, (byte)0xc5, (byte)0x71, 
        (byte)0x4c, (byte)0xa7, (byte)0xb1, (byte)0xf6, 
        (byte)0x5b, (byte)0xc2, (byte)0x40, (byte)0x1f, 
        (byte)0x69, (byte)0x68, (byte)0xae, (byte)0x69, 
        (byte)0x52, (byte)0x4a, (byte)0xa5, (byte)0x54, 
        (byte)0x59, (byte)0x96, (byte)0x9a, (byte)0xa6, 
        (byte)0x01, (byte)0xc0, (byte)0x7f, (byte)0x46, 
        (byte)0xff, (byte)0x1b, (byte)0x3d, (byte)0x7b, 
        (byte)0x24, (byte)0x4e, (byte)0xa5, (byte)0xd4, 
        (byte)0x6a, (byte)0xb5, (byte)0x6a, (byte)0xba, 
        (byte)0xd0, (byte)0xdf, (byte)0x7f, (byte)0xff, 
        (byte)0xfd, (byte)0xea, (byte)0xd5, (byte)0x2b, 
        (byte)0x00, (byte)0xf8, (byte)0xe5, (byte)0x97, 
        (byte)0x5f, (byte)0x6e, (byte)0x6e, (byte)0x6e, 
        (byte)0x7e, (byte)0xfb, (byte)0xed, (byte)0xb7, 
        (byte)0x3f, (byte)0xfe, (byte)0xf8, (byte)0x63, 
        (byte)0x7f, (byte)0x27, (byte)0xd7, (byte)0xd7, 
        (byte)0xd7, (byte)0x9c, (byte)0xf3, (byte)0x9f, 
        (byte)0x7e, (byte)0xfa, (byte)0xa9, (byte)0x06, 
        (byte)0xc6, (byte)0x39, (byte)0xff, (byte)0xe1, 
        (byte)0x87, (byte)0x1f, (byte)0x6e, (byte)0x6e, 
        (byte)0x6e, (byte)0xae, (byte)0xaf, (byte)0xaf, 
        (byte)0x69, (byte)0xde, (byte)0xcf, (byte)0x9f, 
        (byte)0x3f, (byte)0xff, (byte)0xf9, (byte)0xe7, 
        (byte)0x9f, (byte)0x1d, (byte)0xc7, (byte)0xf9, 
        (byte)0xf6, (byte)0xdb, (byte)0x6f, (byte)0x4d, 
        (byte)0xd3, (byte)0xfc, (byte)0xfe, (byte)0xfb, 
        (byte)0xef, (byte)0xaf, (byte)0xaf, (byte)0xaf, 
        (byte)0x5f, (byte)0xbd, (byte)0x7a, (byte)0xf5, 
        (byte)0xcd, (byte)0x37, (byte)0xdf, (byte)0x1c, 
        (byte)0x1f, (byte)0x1f, (byte)0xd7, (byte)0x93, 
        (byte)0x39, (byte)0x3e, (byte)0x3e, (byte)0x46, 
        (byte)0xc4, (byte)0xb7, (byte)0x6f, (byte)0xdf, 
        (byte)0xbe, (byte)0x7b, (byte)0xf7, (byte)0xee, 
        (byte)0xe8, (byte)0xeb, (byte)0xaf, (byte)0xdf, 
        (byte)0xbd, (byte)0x7b, (byte)0x77, (byte)0x74, 
        (byte)0x74, (byte)0xf4, (byte)0xfc, (byte)0xf9, 
        (byte)0x73, (byte)0x3a, (byte)0x2f, (byte)0x8f, 
        (byte)0xde, (byte)0xc3, (byte)0xa2, (byte)0x28, 
        (byte)0x96, (byte)0xcb, (byte)0x25, (byte)0xc9, 
        (byte)0x0e, (byte)0x02, (byte)0x49, (byte)0xde, 
        (byte)0x22, (byte)0xa5, (byte)0xf4, (byte)0x7d, 
        (byte)0xdf, (byte)0x30, (byte)0x0c, (byte)0x21, 
        (byte)0xc4, (byte)0x6a, (byte)0xb5, (byte)0xba, 
        (byte)0xaf, (byte)0x39, (byte)0x03, (byte)0x60, 
        (byte)0xc0, (byte)0x4c, (byte)0xd0, (byte)0x75, 
        (byte)0x80, (byte)0x70, (byte)0x34, (byte)0x4b, 
        (byte)0xa3, (byte)0xb8, (byte)0xdb, (byte)0xef, 
        (byte)0x75, (byte)0x3a, (byte)0x1d, (byte)0xc2, 
        (byte)0xa9, (byte)0xeb, (byte)0x7a, (byte)0xab, 
        (byte)0xd5, (byte)0x42, (byte)0x44, (byte)0xce, 
        (byte)0xb9, (byte)0x65, (byte)0x59, (byte)0xcd, 
        (byte)0x1d, (byte)0x26, (byte)0xa3, (byte)0x0d, 
        (byte)0x8c, (byte)0xe3, (byte)0xb8, (byte)0xd3, 
        (byte)0xe9, (byte)0xd0, (byte)0x13, (byte)0x0a, 
        (byte)0x21, (byte)0x24, (byte)0x86, (byte)0x35, 
        (byte)0x4d, (byte)0xab, (byte)0xaa, (byte)0x8a, 
        (byte)0xfe, (byte)0xea, (byte)0x8c, (byte)0x99, 
        (byte)0x96, (byte)0xc5, (byte)0xf4, (byte)0x47, 
        (byte)0x22, (byte)0x24, (byte)0x78, (byte)0xed, 
        (byte)0x76, (byte)0xdb, (byte)0xb2, (byte)0x2c, 
        (byte)0x44, (byte)0x9c, (byte)0xcf, (byte)0xe7, 
        (byte)0x42, (byte)0x88, (byte)0xfa, (byte)0xfc, 
        (byte)0xb8, (byte)0xae, (byte)0x0b, (byte)0x00, 
        (byte)0x49, (byte)0x92, (byte)0xec, (byte)0x94, 
        (byte)0x66, (byte)0x0c, (byte)0xc0, (byte)0xb1, 
        (byte)0x9d, (byte)0x9e, (byte)0xe9, (byte)0xd9, 
        (byte)0x6b, (byte)0x06, (byte)0xc5, (byte)0xfb, 
        (byte)0xf3, (byte)0x83, (byte)0x11, (byte)0x5e, 
        (byte)0x45, (byte)0x93, (byte)0xe5, (byte)0xd9, 
        (byte)0x32, (byte)0x08, (byte)0x02, (byte)0x02, 
        (byte)0x69, (byte)0x18, (byte)0x86, (byte)0xef, 
        (byte)0xfb, (byte)0xcd, (byte)0x86, (byte)0x4a, 
        (byte)0xa9, (byte)0x3a, (byte)0x12, (byte)0xd2, 
        (byte)0x52, (byte)0xd6, (byte)0x61, (byte)0xa3, 
        (byte)0xf6, (byte)0xcf, (byte)0x52, (byte)0xca, 
        (byte)0xaa, (byte)0xaa, (byte)0x00, (byte)0x80, 
        (byte)0x3c, (byte)0x53, (byte)0xe3, (byte)0x5c, 
        (byte)0x21, (byte)0xca, (byte)0x3c, (byte)0x75, 
        (byte)0x6d, (byte)0xf7, (byte)0x71, (byte)0x4c, 
        (byte)0x93, (byte)0xa6, (byte)0xa9, (byte)0xe7, 
        (byte)0x79, (byte)0xc4, (byte)0x78, (byte)0x8c, 
        (byte)0xb1, (byte)0x76, (byte)0xbb, (byte)0x9d, 
        (byte)0xe7, (byte)0x79, (byte)0x1c, (byte)0xc7, 
        (byte)0x79, (byte)0x9e, (byte)0xf7, (byte)0x7a, 
        (byte)0x3d, (byte)0x1a, (byte)0x78, (byte)0xb9, 
        (byte)0x5c, (byte)0x6e, (byte)0x27, (byte)0x81, 
        (byte)0x0c, (byte)0xd8, (byte)0xa0, (byte)0x7d, 
        (byte)0x16, (byte)0x2d, (byte)0xa3, (byte)0xc1, 
        (byte)0xcb, (byte)0x99, (byte)0xfb, (byte)0xc2, 
        (byte)0x6f, (byte)0x3e, (byte)0x3f, (byte)0x03, 
        (byte)0x8f, (byte)0x5f, (byte)0x8a, (byte)0xab, 
        (byte)0xab, (byte)0xab, (byte)0x3d, (byte)0xe3, 
        (byte)0x52, (byte)0x87, (byte)0x4a, (byte)0x29, 
        (byte)0x3a, (byte)0x8a, (byte)0xcd, (byte)0x48, 
        (byte)0xa3, (byte)0x94, (byte)0x92, (byte)0x52, 
        (byte)0x22, (byte)0x00, (byte)0xe7, (byte)0x9c, 
        (byte)0x73, (byte)0xce, (byte)0x00, (byte)0x68, 
        (byte)0x03, (byte)0x0d, (byte)0xc3, (byte)0xe0, 
        (byte)0x8c, (byte)0xc3, (byte)0x01, (byte)0x4c, 
        (byte)0xd3, (byte)0x54, (byte)0xc3, (byte)0x8e, 
        (byte)0xe3, (byte)0x5c, (byte)0x5c, (byte)0x5c, 
        (byte)0xe4, (byte)0x79, (byte)0xee, (byte)0xba, 
        (byte)0x2e, (byte)0x79, (byte)0x94, (byte)0x10, 
        (byte)0x22, (byte)0xcb, (byte)0xb2, (byte)0x2d, 
        (byte)0x78, (byte)0x30, (byte)0x60, (byte)0xce, 
        (byte)0xa4, (byte)0x33, (byte)0x04, (byte)0x4b, 
        (byte)0x07, (byte)0x85, (byte)0x52, (byte)0x16, 
        (byte)0x1b, (byte)0x2f, (byte)0x74, (byte)0xc0, 
        (byte)0x9d, (byte)0x07, (byte)0xe1, (byte)0xd9, 
        (byte)0xd9, (byte)0xd9, (byte)0xf6, (byte)0x70, 
        (byte)0x4a, (byte)0x29, (byte)0xda, (byte)0x28, 
        (byte)0x92, (byte)0x16, (byte)0xad, (byte)0x56, 
        (byte)0xab, (byte)0x76, (byte)0x5d, (byte)0x62, 
        (byte)0xcb, (byte)0xb2, (byte)0x2c, (byte)0x09, 
        (byte)0x33, (byte)0x22, (byte)0x2a, (byte)0x44, 
        (byte)0x40, (byte)0x04, (byte)0x29, (byte)0x95, 
        (byte)0x52, (byte)0x96, (byte)0x65, (byte)0x59, 
        (byte)0x96, (byte)0x85, (byte)0x80, (byte)0x1f, 
        (byte)0x47, (byte)0x48, (byte)0x6c, (byte)0xf9, 
        (byte)0x7e, (byte)0xae, (byte)0x77, (byte)0x82, 
        (byte)0xb3, (byte)0xfe, (byte)0x96, (byte)0x3a, 
        (byte)0x6a, (byte)0x4e, (byte)0x68, (byte)0x3b, 
        (byte)0x03, (byte)0xb4, (byte)0xc0, (byte)0xf0, 
        (byte)0xd1, (byte)0x15, (byte)0x57, (byte)0xb1, 
        (byte)0xc6, (byte)0xb1, (byte)0x8c, (byte)0xd6, 
        (byte)0x32, (byte)0xd8, (byte)0x5c, (byte)0x02, 
        (byte)0x00, (byte)0x90, (byte)0x22, (byte)0xcf, 
        (byte)0xb2, (byte)0x6c, (byte)0x43, (byte)0xb5, 
        (byte)0xd0, (byte)0xd0, (byte)0x4a, (byte)0xa9, 
        (byte)0xaa, (byte)0xaa, (byte)0x38, (byte)0xe7, 
        (byte)0xf5, (byte)0xe2, (byte)0xd2, (byte)0xc9, 
        (byte)0x27, (byte)0x16, (byte)0x20, (byte)0x19, 
        (byte)0x4c, (byte)0x73, (byte)0x33, (byte)0xe8, 
        (byte)0x30, (byte)0x33, (byte)0x96, (byte)0x0b, 
        (byte)0x51, (byte)0x96, (byte)0x25, (byte)0xad, 
        (byte)0xc5, (byte)0x83, (byte)0x10, (byte)0xc2, 
        (byte)0x9d, (byte)0xc7, (byte)0x7b, (byte)0x9e, 
        (byte)0x57, (byte)0x47, (byte)0x79, (byte)0x62, 
        (byte)0xf0, (byte)0x0d, (byte)0x8a, (byte)0x0f, 
        (byte)0x82, (byte)0x60, (byte)0xc3, (byte)0x45, 
        (byte)0x19, (byte)0x80, (byte)0x0d, (byte)0x26, 
        (byte)0x00, (byte)0x88, (byte)0x28, (byte)0x83, 
        (byte)0xe8, (byte)0xde, (byte)0xd4, (byte)0x29, 
        (byte)0x2f, (byte)0xa5, (byte)0xef, (byte)0xfb, 
        (byte)0xc3, (byte)0xe1, (byte)0xf0, (byte)0xfc, 
        (byte)0xfc, (byte)0xfc, (byte)0xdf, (byte)0xb6, 
        (byte)0x8c, (byte)0xd1, (byte)0x1e, (byte)0xd2, 
        (byte)0x39, (byte)0xc4, (byte)0x3b, (byte)0xab, 
        (byte)0x00, (byte)0xa0, (byte)0xaa, (byte)0xb8, 
        (byte)0xa6, (byte)0xe9, (byte)0x5b, (byte)0x54, 
        (byte)0x04, (byte)0x00, (byte)0x4c, (byte)0xd7, 
        (byte)0x6b, (byte)0xd8, (byte)0x00, (byte)0x70, 
        (byte)0x54, (byte)0xdd, (byte)0x56, (byte)0xfb, 
        (byte)0x2b, (byte)0x51, (byte)0xd4, (byte)0x69, 
        (byte)0xbd, (byte)0x4e, (byte)0x75, (byte)0x24, 
        (byte)0x25, (byte)0xd6, (byte)0xd2, (byte)0x75, 
        (byte)0xbd, (byte)0xee, (byte)0xeb, (byte)0xf2, 
        (byte)0xf2, (byte)0xf2, (byte)0xfc, (byte)0xfc, 
        (byte)0xbc, (byte)0x16, (byte)0x2b, (byte)0x24, 
        (byte)0x9d, (byte)0xab, (byte)0xaa, (byte)0x6a, 
        (byte)0x17, (byte)0x66, (byte)0x1f, (byte)0xf6, 
        (byte)0x45, (byte)0xf3, (byte)0x00, (byte)0xe2, 
        (byte)0xd6, (byte)0xa4, (byte)0xb7, (byte)0x0c, 
        (byte)0xc3, (byte)0x24, (byte)0x49, (byte)0x96, 
        (byte)0xcb, (byte)0xe5, (byte)0x06, (byte)0xd3, 
        (byte)0x20, (byte)0x00, (byte)0x2a, (byte)0x05, 
        (byte)0x88, (byte)0x65, (byte)0x55, (byte)0x69, 
        (byte)0x9a, (byte)0x46, (byte)0xf3, (byte)0x78, 
        (byte)0xa0, (byte)0x0a, (byte)0xdf, (byte)0xe1, 
        (byte)0xa5, (byte)0x34, (byte)0xfb, (byte)0x66, 
        (byte)0xfb, (byte)0x9a, (byte)0xaf, (byte)0xea, 
        (byte)0x3a, (byte)0xd2, (byte)0x36, (byte)0x89, 
        (byte)0x03, (byte)0xc0, (byte)0x6a, (byte)0xb5, 
        (byte)0x22, (byte)0x81, (byte)0xda, (byte)0x6e, 
        (byte)0xb7, (byte)0x1d, (byte)0xc7, (byte)0xb1, 
        (byte)0x6d, (byte)0x9b, (byte)0x22, (byte)0x75, 
        (byte)0x59, (byte)0x96, (byte)0xe3, (byte)0xfe, 
        (byte)0x10, (byte)0x36, (byte)0x8f, (byte)0x5e, 
        (byte)0xa3, (byte)0x21, (byte)0x4b, (byte)0x79, 
        (byte)0xcf, (byte)0x3b, (byte)0xeb, (byte)0x74, 
        (byte)0x4e, (byte)0x1c, (byte)0xe7, (byte)0xc5, 
        (byte)0x8b, (byte)0x17, (byte)0xf3, (byte)0xf9, 
        (byte)0x5c, (byte)0x4a, (byte)0xd9, (byte)0xcc, 
        (byte)0x98, (byte)0x08, (byte)0x12, (byte)0x30, 
        (byte)0x66, (byte)0xed, (byte)0x1a, (byte)0xf7, 
        (byte)0xa3, (byte)0xf6, (byte)0x01, (byte)0x42, 
        (byte)0xca, (byte)0xca, (byte)0xb6, (byte)0x35, 
        (byte)0x71, (byte)0xed, (byte)0x8d, (byte)0x35, 
        (byte)0xa7, (byte)0x6d, (byte)0x3c, (byte)0x57, 
        (byte)0x4a, (byte)0x4d, (byte)0xa7, (byte)0x53, 
        (byte)0x44, (byte)0x9c, (byte)0xcd, (byte)0x66, 
        (byte)0xa4, (byte)0xda, (byte)0x3e, (byte)0xe8, 
        (byte)0x76, (byte)0xac, (byte)0x82, (byte)0xff, 
        (byte)0x4e, (byte)0xfa, (byte)0xe0, (byte)0x01, 
        (byte)0x60, (byte)0xb3, (byte)0x30, (byte)0x7b, 
        (byte)0x05, (byte)0xb1, (byte)0x04, (byte)0x30, 
        (byte)0xfb, (byte)0x5e, (byte)0xa7, (byte)0xd7, 
        (byte)0x51, (byte)0x4a, (byte)0xb5, (byte)0xdb, 
        (byte)0xed, (byte)0xc9, (byte)0x64, (byte)0x42, 
        (byte)0x09, (byte)0xd7, (byte)0x68, (byte)0x34, 
        (byte)0xea, (byte)0x74, (byte)0x3a, (byte)0x75, 
        (byte)0x92, (byte)0xd5, (byte)0x1c, (byte)0xbd, 
        (byte)0xa9, (byte)0x7d, (byte)0x48, (byte)0x9e, 
        (byte)0xc1, (byte)0x3d, (byte)0x7a, (byte)0x68, 
        (byte)0x07, (byte)0xc2, (byte)0x9d, (byte)0x65, 
        (byte)0x22, (byte)0x54, (byte)0x4a, (byte)0x22, 
        (byte)0x6a, (byte)0x14, (byte)0x6e, (byte)0x00, 
        (byte)0x34, (byte)0x4d, (byte)0xab, (byte)0x3d, 
        (byte)0xb6, (byte)0x1e, (byte)0x78, (byte)0x32, 
        (byte)0x99, (byte)0xe8, (byte)0xba, (byte)0x7e, 
        (byte)0x72, (byte)0x72, (byte)0xd2, (byte)0xed, 
        (byte)0x76, (byte)0xb7, (byte)0x77, (byte)0xb8, 
        (byte)0xd3, (byte)0xeb, (byte)0x18, (byte)0x96, 
        (byte)0x31, (byte)0x1f, (byte)0x4d, (byte)0x41, 
        (byte)0x94, (byte)0x0c, (byte)0x01, (byte)0x19, 
        (byte)0x80, (byte)0x06, (byte)0x60, (byte)0x70, 
        (byte)0xd3, (byte)0xf5, (byte)0xda, (byte)0xb6, 
        (byte)0x6d, (byte)0xbb, (byte)0xae, (byte)0x76, 
        (byte)0xe7, (byte)0x35, (byte)0xed, (byte)0x76, 
        (byte)0x3b, (byte)0x8e, (byte)0x63, (byte)0x00, 
        (byte)0xe8, (byte)0xf7, (byte)0xfb, (byte)0x41, 
        (byte)0x10, (byte)0x24, (byte)0x49, (byte)0x72, 
        (byte)0x7e, (byte)0x7e, (byte)0xfe, (byte)0x7e, 
        (byte)0x14, (byte)0x9a, (byte)0x0c, (byte)0x62, 
        (byte)0xbd, (byte)0xc0, (byte)0xff, (byte)0x4e, 
        (byte)0x62, (byte)0x6f, (byte)0xda, (byte)0x71, 
        (byte)0x54, (byte)0xdd, (byte)0x56, (byte)0x80, 
        (byte)0x40, (byte)0x5a, (byte)0xae, (byte)0x26, 
        (byte)0x09, (byte)0xc3, (byte)0x30, (byte)0x38, 
        (byte)0xe7, (byte)0x35, (byte)0x5f, (byte)0xd5, 
        (byte)0xbc, (byte)0xb2, (byte)0x73, (byte)0xb5, 
        (byte)0xa6, (byte)0xd3, (byte)0x69, (byte)0x59, 
        (byte)0x96, (byte)0x96, (byte)0x65, (byte)0x65, 
        (byte)0x59, (byte)0x36, (byte)0x1a, (byte)0x8d, 
        (byte)0x76, (byte)0xfa, (byte)0x30, (byte)0x00, 
        (byte)0x14, (byte)0x45, (byte)0xb1, (byte)0x16, 
        (byte)0xeb, (byte)0x42, (byte)0x14, (byte)0xc0, 
        (byte)0x98, (byte)0xce, (byte)0x18, (byte)0x30, 
        (byte)0xe0, (byte)0x1a, (byte)0xaf, (byte)0x87, 
        (byte)0xab, (byte)0xb7, (byte)0x3d, (byte)0x49, 
        (byte)0x92, (byte)0xc9, (byte)0x64, (byte)0x42, 
        (byte)0xc2, (byte)0x9d, (byte)0x6a, (byte)0x90, 
        (byte)0xa3, (byte)0xd1, (byte)0xa8, (byte)0x19, 
        (byte)0xf1, (byte)0x19, (byte)0x63, (byte)0x08, 
        (byte)0xc0, (byte)0x14, (byte)0xa2, (byte)0xfe, 
        (byte)0xf1, (byte)0x84, (byte)0x0a, (byte)0x01, 
        (byte)0x8f, (byte)0x64, (byte)0x29, (byte)0xa5, 
        (byte)0x90, (byte)0x84, (byte)0xad, (byte)0x96, 
        (byte)0x3c, (byte)0xb4, (byte)0x51, (byte)0xa6, 
        (byte)0x69, (byte)0x32, (byte)0xc6, (byte)0x58, 
        (byte)0xe3, (byte)0x9e, (byte)0xa1, (byte)0x66, 
        (byte)0x9d, (byte)0x26, (byte)0xbb, (byte)0x84, 
        (byte)0x61, (byte)0x18, (byte)0x04, (byte)0x41, 
        (byte)0x10, (byte)0x04, (byte)0x65, (byte)0x59, 
        (byte)0x8e, (byte)0x46, (byte)0xa3, (byte)0xe6, 
        (byte)0x12, (byte)0x44, (byte)0x51, (byte)0xb4, 
        (byte)0x11, (byte)0x4e, (byte)0x10, (byte)0x51, 
        (byte)0xa1, (byte)0x02, (byte)0x84, (byte)0xf7, 
        (byte)0x12, (byte)0x84, (byte)0x6b, (byte)0x3a, 
        (byte)0xd3, (byte)0x9b, (byte)0x4d, (byte)0x10, 
        (byte)0x71, (byte)0x3a, (byte)0x9d, (byte)0x4a, 
        (byte)0x29, (byte)0x67, (byte)0xb3, (byte)0x99, 
        (byte)0x52, (byte)0x6a, (byte)0x3c, (byte)0x1e, 
        (byte)0xdb, (byte)0xb6, (byte)0x4d, (byte)0x27, 
        (byte)0xfc, (byte)0x80, (byte)0x14, (byte)0x11, 
        (byte)0x01, (byte)0xbf, (byte)0x2a, (byte)0x65, 
        (byte)0xb9, (byte)0x01, (byte)0x8f, (byte)0x6b, 
        (byte)0x9a, (byte)0x65, (byte)0x59, (byte)0xb6, 
        (byte)0x6d, (byte)0x1b, (byte)0x86, (byte)0xa1, 
        (byte)0xdf, (byte)0xc1, (byte)0xa3, (byte)0x1a, 
        (byte)0x26, (byte)0x22, (byte)0x36, (byte)0xc9, 
        (byte)0x33, (byte)0x49, (byte)0x92, (byte)0x30, 
        (byte)0x0c, (byte)0x87, (byte)0xc3, (byte)0xa1, 
        (byte)0xae, (byte)0xeb, (byte)0x42, (byte)0x08, 
        (byte)0x5a, (byte)0x91, (byte)0xe6, (byte)0x00, 
        (byte)0xad, (byte)0x56, (byte)0x8b, (byte)0x12, 
        (byte)0xab, (byte)0xfa, (byte)0x09, (byte)0x63, 
        (byte)0xcc, (byte)0xd0, (byte)0x0d, (byte)0xda, 
        (byte)0x34, (byte)0xcb, (byte)0xb2, (byte)0x0c, 
        (byte)0xdd, (byte)0xd8, (byte)0x68, (byte)0xc2, 
        (byte)0x18, (byte)0xeb, (byte)0x74, (byte)0x3a, 
        (byte)0x65, (byte)0x59, (byte)0xae, (byte)0x56, 
        (byte)0x2b, (byte)0x5d, (byte)0xd7, (byte)0x5d, 
        (byte)0xd7, (byte)0xcd, (byte)0xf3, (byte)0x1c, 
        (byte)0x9f, (byte)0x50, (byte)0x17, (byte)0x7e, 
        (byte)0x56, (byte)0xd3, (byte)0x06, (byte)0x51, 
        (byte)0xbf, (byte)0x65, (byte)0x59, (byte)0x4d, 
        (byte)0x0c, (byte)0x64, (byte)0x45, (byte)0x51, 
        (byte)0x50, (byte)0x9a, (byte)0xdb, (byte)0x7c, 
        (byte)0x28, (byte)0x84, (byte)0x08, (byte)0x82, 
        (byte)0xc0, (byte)0xf7, (byte)0xfd, (byte)0x93, 
        (byte)0x93, (byte)0x13, (byte)0x5a, (byte)0x82, 
        (byte)0xed, (byte)0xf2, (byte)0x26, (byte)0x49, 
        (byte)0x9c, (byte)0x20, (byte)0x08, (byte)0x5c, 
        (byte)0xd7, (byte)0xf5, (byte)0x7d, (byte)0xff, 
        (byte)0x81, (byte)0x65, (byte)0x08, (byte)0xdb, 
        (byte)0xb6, (byte)0xbb, (byte)0xdd, (byte)0xee, 
        (byte)0xd5, (byte)0xd5, (byte)0x15, (byte)0x85, 
        (byte)0x0d, (byte)0xa5, (byte)0x14, (byte)0x34, 
        (byte)0xf8, (byte)0xfc, (byte)0xd1, (byte)0x10, 
        (byte)0xd3, (byte)0x34, (byte)0x8d, (byte)0xe3, 
        (byte)0x38, (byte)0x4d, (byte)0xd3, (byte)0xdb, 
        (byte)0x72, (byte)0x77, (byte)0x59, (byte)0x51, 
        (byte)0x4a, (byte)0x59, (byte)0x57, (byte)0x07, 
        (byte)0x9b, (byte)0x65, (byte)0xbf, (byte)0xf1, 
        (byte)0x78, (byte)0x7c, (byte)0x7e, (byte)0x7e, 
        (byte)0x5e, (byte)0x7f, (byte)0xec, (byte)0xf7, 
        (byte)0xfb, (byte)0x2f, (byte)0x5f, (byte)0xbe, 
        (byte)0x6c, (byte)0xb6, (byte)0xda, (byte)0xae, 
        (byte)0x76, (byte)0x1a, (byte)0x86, (byte)0x11, 
        (byte)0x86, (byte)0x61, (byte)0xb3, (byte)0x9f, 
        (byte)0x38, (byte)0x8e, (byte)0x67, (byte)0xb3, 
        (byte)0x99, (byte)0x94, (byte)0x72, (byte)0x7b, 
        (byte)0xdc, (byte)0xc9, (byte)0x64, (byte)0x32, 
        (byte)0x18, (byte)0x0c, (byte)0x3a, (byte)0x9d, 
        (byte)0xce, (byte)0x6c, (byte)0x36, (byte)0xa3, 
        (byte)0x27, (byte)0x7b, (byte)0xca, (byte)0x90, 
        (byte)0xfb, (byte)0xaa, (byte)0x89, (byte)0xba, 
        (byte)0xae, (byte)0x2b, (byte)0xa5, (byte)0x6c, 
        (byte)0xc7, (byte)0xde, (byte)0x79, (byte)0xc1, 
        (byte)0x46, (byte)0x92, (byte)0x62, (byte)0x7b, 
        (byte)0xe5, (byte)0xf2, (byte)0x3c, (byte)0x4f, 
        (byte)0xd3, (byte)0xb4, (byte)0x4e, (byte)0xe4, 
        (byte)0xc9, (byte)0x11, (byte)0x9a, (byte)0x7b, 
        (byte)0xd8, (byte)0xef, (byte)0xf7, (byte)0x37, 
        (byte)0x32, (byte)0x0c, (byte)0x4a, (byte)0x7c, 
        (byte)0xa2, (byte)0x28, (byte)0xea, (byte)0x74, 
        (byte)0x3a, (byte)0x54, (byte)0x16, (byte)0x18, 
        (byte)0x8f, (byte)0xc7, (byte)0x88, (byte)0x68, 
        (byte)0x9a, (byte)0x26, (byte)0xa5, (byte)0xcb, 
        (byte)0x88, (byte)0x58, (byte)0x6f, (byte)0x32, 
        (byte)0x65, (byte)0xd8, (byte)0x71, (byte)0x1c, 
        (byte)0x8f, (byte)0x46, (byte)0xa3, (byte)0xc1, 
        (byte)0x60, (byte)0x00, (byte)0x4f, (byte)0xb8, 
        (byte)0xdf, (byte)0x7c, (byte)0x66, (byte)0x5a, 
        (byte)0xa6, (byte)0x05, (byte)0x3b, (byte)0xca, 
        (byte)0x5e, (byte)0x70, (byte)0x17, (byte)0x7f, 
        (byte)0x9a, (byte)0xd1, (byte)0xbf, (byte)0x8e, 
        (byte)0xfb, (byte)0xab, (byte)0xd5, (byte)0x8a, 
        (byte)0x2a, (byte)0x62, (byte)0xf4, (byte)0x9c, 
        (byte)0x68, (byte)0x83, (byte)0x78, (byte)0x48, 
        (byte)0x29, (byte)0x35, (byte)0x99, (byte)0x4c, 
        (byte)0x36, (byte)0x52, (byte)0x44, (byte)0xc7, 
        (byte)0x71, (byte)0xa2, (byte)0x28, (byte)0xd2, 
        (byte)0x75, (byte)0x9d, (byte)0x0e, (byte)0xb3, 
        (byte)0x10, (byte)0x62, (byte)0x32, (byte)0x99, 
        (byte)0x10, (byte)0x03, (byte)0x91, (byte)0x36, 
        (byte)0x98, (byte)0xcf, (byte)0xe7, (byte)0xab, 
        (byte)0xd5, (byte)0x6a, (byte)0xb5, (byte)0x5a, 
        (byte)0x31, (byte)0xc6, (byte)0x7a, (byte)0xbd, 
        (byte)0xde, (byte)0xd9, (byte)0xd9, (byte)0x99, 
        (byte)0xeb, (byte)0xba, (byte)0x61, (byte)0x18, 
        (byte)0x12, (byte)0xc3, (byte)0x33, (byte)0xc6, 
        (byte)0x0e, (byte)0x3e, (byte)0x8a, (byte)0xfb, 
        (byte)0x74, (byte)0xe9, (byte)0xb6, (byte)0xdf, 
        (byte)0xd7, (byte)0x08, (byte)0xa9, (byte)0x52, 
        (byte)0x94, (byte)0xe7, (byte)0x39, (byte)0xa1, 
        (byte)0xa2, (byte)0xba, (byte)0x13, (byte)0x05, 
        (byte)0xeb, (byte)0xf5, (byte)0x7a, (byte)0x4d, 
        (byte)0xf7, (byte)0x30, (byte)0x4d, (byte)0xe3, 
        (byte)0x9c, (byte)0xd3, (byte)0x4a, (byte)0xd1, 
        (byte)0xa2, (byte)0x50, (byte)0x43, (byte)0x22, 
        (byte)0x1b, (byte)0x72, (byte)0xe6, (byte)0xf3, 
        (byte)0xf3, (byte)0x73, (byte)0xc7, (byte)0x71, 
        (byte)0x82, (byte)0x20, (byte)0xd0, (byte)0x34, 
        (byte)0x8d, (byte)0xa2, (byte)0x2b, (byte)0x00, 
        (byte)0x9c, (byte)0x9e, (byte)0x9e, (byte)0x8e, 
        (byte)0x46, (byte)0xa3, (byte)0x2c, (byte)0xcb, 
        (byte)0x9c, (byte)0x93, (byte)0x13, (byte)0x40, 
        (byte)0x64, (byte)0x07, (byte)0xd5, (byte)0x4b, 
        (byte)0xef, (byte)0xad, (byte)0x62, (byte)0x20, 
        (byte)0xe2, (byte)0xcd, (byte)0xcd, (byte)0x4d, 
        (byte)0x5d, (byte)0x2c, (byte)0x20, (byte)0xa3, 
        (byte)0x92, (byte)0x01, (byte)0x63, (byte)0xcc, 
        (byte)0x75, (byte)0xdd, (byte)0x3f, (byte)0xff, 
        (byte)0xfc, (byte)0xf3, (byte)0xf2, (byte)0xf2, 
        (byte)0xf2, (byte)0xaf, (byte)0xbf, (byte)0xfe, 
        (byte)0xa2, (byte)0xbb, (byte)0x41, (byte)0x44, 
        (byte)0xb4, (byte)0x6d, (byte)0xdb, (byte)0xb2, 
        (byte)0xac, (byte)0x6e, (byte)0xb7, (byte)0x4b, 
        (byte)0x39, (byte)0xe4, (byte)0xf5, (byte)0xf5, 
        (byte)0x35, (byte)0x79, (byte)0xaf, (byte)0x6d, 
        (byte)0xdb, (byte)0xbf, (byte)0xfe, (byte)0xfa, 
        (byte)0xeb, (byte)0x8f, (byte)0x3f, (byte)0xfe, 
        (byte)0x58, (byte)0xf7, (byte)0x33, (byte)0x9f, 
        (byte)0xcf, (byte)0x7f, (byte)0xff, (byte)0xfd, 
        (byte)0x77, (byte)0x44, (byte)0xf4, (byte)0x3c, 
        (byte)0xef, (byte)0x9f, (byte)0x7f, (byte)0xfe, 
        (byte)0x79, (byte)0xfd, (byte)0xfa, (byte)0x35, 
        (byte)0x85, (byte)0xdc, (byte)0x56, (byte)0xab, 
        (byte)0xf5, (byte)0xf6, (byte)0xed, (byte)0x5b, 
        (byte)0xcf, (byte)0xf3, (byte)0xa8, (byte)0xb2, 
        (byte)0x76, (byte)0x7c, (byte)0x7c, (byte)0x7c, 
        (byte)0x73, (byte)0x73, (byte)0xf3, (byte)0xfa, 
        (byte)0xf5, (byte)0xeb, (byte)0xd6, (byte)0x77, 
        (byte)0xdf, (byte)0xb1, (byte)0x2d, (byte)0xfe, 
        (byte)0x7b, (byte)0x88, (byte)0xdd, (byte)0xc0, 
        (byte)0xcd, (byte)0xbd, (byte)0x7b, (byte)0x78, 
        (byte)0x5f, (byte)0x5d, (byte)0xa8, (byte)0x2e, 
        (byte)0x1f, (byte)0x5e, (byte)0x5c, (byte)0x5c, 
        (byte)0xc0, (byte)0x5d, (byte)0x02, (byte)0x1e, 
        (byte)0x45, (byte)0x51, (byte)0x96, (byte)0x65, 
        (byte)0x83, (byte)0xc1, (byte)0x60, (byte)0x23, 
        (byte)0x18, (byte)0x46, (byte)0x51, (byte)0xa4, 
        (byte)0x69, (byte)0xda, (byte)0x36, (byte)0x8b, 
        (byte)0xb6, (byte)0xdb, (byte)0x6d, (byte)0x2a, 
        (byte)0x76, (byte)0x94, (byte)0x65, (byte)0x39, 
        (byte)0x18, (byte)0x0c, (byte)0x2c, (byte)0xcb, 
        (byte)0xaa, (byte)0xd3, (byte)0x2e, (byte)0xaa, 
        (byte)0x8f, (byte)0xd4, (byte)0x6f, (byte)0x7a, 
        (byte)0x9e, (byte)0x17, (byte)0x86, (byte)0x61, 
        (byte)0x59, (byte)0x55, (byte)0x87, (byte)0x89, 
        (byte)0x52, (byte)0xd8, (byte)0xef, (byte)0xa5, 
        (byte)0xdb, (byte)0x20, (byte)0x29, (byte)0x9d, 
        (byte)0x69, (byte)0x86, (byte)0x8d, (byte)0x66, 
        (byte)0x5e, (byte)0xb3, (byte)0xf1, (byte)0x55, 
        (byte)0xbb, (byte)0xdd, (byte)0xbe, (byte)0xaf, 
        (byte)0x7a, (byte)0x4f, (byte)0xea, (byte)0x6c, 
        (byte)0xb5, (byte)0x5a, (byte)0x65, (byte)0x59, 
        (byte)0x36, (byte)0x9f, (byte)0xcf, (byte)0xbb, 
        (byte)0xdd, (byte)0x2e, (byte)0x65, (byte)0x9e, 
        (byte)0x61, (byte)0x18, (byte)0x02, (byte)0x80, 
        (byte)0x94, (byte)0xb2, (byte)0xee, (byte)0x87, 
        (byte)0x22, (byte)0x6d, (byte)0x51, (byte)0x14, 
        (byte)0x3b, (byte)0x6b, (byte)0xe4, (byte)0x0f, 
        (byte)0xb1, (byte)0xc7, (byte)0xe5, (byte)0xf8, 
        (byte)0xc4, (byte)0xab, (byte)0x45, (byte)0x51, 
        (byte)0x6c, (byte)0x4b, (byte)0xb3, (byte)0x3b, 
        (byte)0xdd, (byte)0xfa, (byte)0x20, (byte)0xa3, 
        (byte)0x75, (byte)0xe9, (byte)0x74, (byte)0x3a, 
        (byte)0x14, (byte)0x30, (byte)0x69, (byte)0x69, 
        (byte)0x34, (byte)0x4d, (byte)0xeb, (byte)0x76, 
        (byte)0xbb, (byte)0x61, (byte)0x18, (byte)0x46, 
        (byte)0x51, (byte)0xd4, (byte)0xac, (byte)0xc4, 
        (byte)0x20, (byte)0xa2, (byte)0x90, (byte)0xf2, 
        (byte)0xe4, (byte)0x51, (byte)0x13, (byte)0x6d, 
        (byte)0xd8, (byte)0xa3, (byte)0xab, (byte)0x18, 
        (byte)0x14, (byte)0x5d, (byte)0x48, (byte)0x03, 
        (byte)0xd4, (byte)0x34, (byte)0xeb, (byte)0xba, 
        (byte)0x2e, (byte)0x29, (byte)0xe6, (byte)0x87, 
        (byte)0xdb, (byte)0x78, (byte)0x3c, (byte)0x06, 
        (byte)0x80, (byte)0x7e, (byte)0xbf, (byte)0x9f, 
        (byte)0x65, (byte)0xd9, (byte)0x6c, (byte)0x36, 
        (byte)0xb3, (byte)0x2c, (byte)0x8b, (byte)0x73, 
        (byte)0x6e, (byte)0x18, (byte)0x06, (byte)0xc5, 
        (byte)0x86, (byte)0xa6, (byte)0x21, (byte)0xd5, 
        (byte)0x26, (byte)0x0e, (byte)0xb5, (byte)0x43, 
        (byte)0x2a, (byte)0xc2, (byte)0xba, (byte)0xae, 
        (byte)0x93, (byte)0x4f, (byte)0x52, (byte)0xb2, 
        (byte)0x4b, (byte)0xfb, (byte)0xf9, (byte)0xd8, 
        (byte)0x9f, (byte)0x20, (byte)0xd0, (byte)0x11, 
        (byte)0x18, (byte)0x0e, (byte)0x87, (byte)0xbd, 
        (byte)0x5e, (byte)0xaf, (byte)0x99, (byte)0xf2, 
        (byte)0x6e, (byte)0xe8, (byte)0x04, (byte)0x52, 
        (byte)0xff, (byte)0xf7, (byte)0xa9, (byte)0xf9, 
        (byte)0x87, (byte)0xd8, (byte)0x81, (byte)0x35, 
        (byte)0x6f, (byte)0x22, (byte)0x9b, (byte)0xfa, 
        (byte)0xf8, (byte)0xe9, (byte)0xba, (byte)0xee, 
        (byte)0x79, (byte)0x9e, (byte)0x94, (byte)0xb2, 
        (byte)0x3e, (byte)0x96, (byte)0x0f, (byte)0xbc, 
        (byte)0x4e, (byte)0x71, (byte)0x1c, (byte)0x67, 
        (byte)0xbf, (byte)0x94, (byte)0xa3, (byte)0xb8, 
        (byte)0x7a, (byte)0xf0, (byte)0x21, (byte)0x84, 
        (byte)0x27, (byte)0xde, (byte)0x72, (byte)0x93, 
        (byte)0xa3, (byte)0x92, (byte)0x8e, (byte)0x25, 
        (byte)0xbd, (byte)0x52, (byte)0x17, (byte)0x75, 
        (byte)0x3e, (byte)0x9a, (byte)0xb6, (byte)0x3d, 
        (byte)0xc4, (byte)0x94, (byte)0x52, (byte)0xf3, 
        (byte)0xf9, (byte)0x9c, (byte)0x4e, (byte)0xfe, 
        (byte)0xc1, (byte)0x9d, (byte)0x7c, (byte)0x82, 
        (byte)0x3b, (byte)0x60, (byte)0x32, (byte)0xdb, 
        (byte)0xb6, (byte)0x83, (byte)0x20, (byte)0xe8, 
        (byte)0xf5, (byte)0x7a, (byte)0x7b, (byte)0x2a, 
        (byte)0x28, (byte)0x14, (byte)0x21, (byte)0xb2, 
        (byte)0x2c, (byte)0x93, (byte)0x52, (byte)0x22, 
        (byte)0x22, (byte)0x91, (byte)0x93, (byte)0x69, 
        (byte)0x9a, (byte)0xa6, (byte)0x69, (byte)0x3a, 
        (byte)0x8e, (byte)0x43, (byte)0x85, (byte)0xe6, 
        (byte)0xfa, (byte)0xe5, (byte)0x3c, (byte)0xcf, 
        (byte)0xfb, (byte)0xfd, (byte)0x3e, (byte)0x25, 
        (byte)0x50, (byte)0x94, (byte)0x5b, (byte)0xd7, 
        (byte)0x5f, (byte)0x85, (byte)0x61, (byte)0x48, 
        (byte)0x9c, (byte)0xf4, (byte)0x90, (byte)0x89, 
        (byte)0x7d, (byte)0xbc, (byte)0x12, (byte)0xf5, 
        (byte)0x70, (byte)0x1b, (byte)0x0e, (byte)0x87, 
        (byte)0x4a, (byte)0x29, (byte)0x8a, (byte)0x93, 
        (byte)0x4d, (byte)0x2b, (byte)0x8a, (byte)0x62, 
        (byte)0xb1, (byte)0x58, (byte)0xc4, (byte)0x71, 
        (byte)0x4c, (byte)0x77, (byte)0xa9, (byte)0xae, 
        (byte)0xeb, (byte)0xda, (byte)0xb6, (byte)0x4d, 
        (byte)0x24, (byte)0x49, (byte)0xc2, (byte)0x28, 
        (byte)0xcb, (byte)0xb2, (byte)0x34, (byte)0x4d, 
        (byte)0x89, (byte)0x51, (byte)0x89, (byte)0x72, 
        (byte)0x84, (byte)0x10, (byte)0xa4, (byte)0xf2, 
        (byte)0x16, (byte)0x8b, (byte)0x45, (byte)0x1d, 
        (byte)0x72, (byte)0x08, (byte)0x55, (byte)0x0d, 
        (byte)0xf5, (byte)0x21, (byte)0x08, (byte)0x11, 
        (byte)0xf0, (byte)0xe8, (byte)0xf6, (byte)0xf6, 
        (byte)0xf6, (byte)0x93, (byte)0xc0, (byte)0x03, 
        (byte)0x00, (byte)0x44, (byte)0xa4, (byte)0xbb, 
        (byte)0xee, (byte)0xf1, (byte)0x78, (byte)0x4c, 
        (byte)0x77, (byte)0xb7, (byte)0x51, (byte)0x14, 
        (byte)0xc5, (byte)0x71, (byte)0x5c, (byte)0x96, 
        (byte)0xa5, (byte)0xe7, (byte)0x79, (byte)0xdd, 
        (byte)0x6e, (byte)0x97, (byte)0x80, (byte)0x6d, 
        (byte)0x7b, (byte)0x2f, (byte)0xf9, (byte)0x36, 
        (byte)0x45, (byte)0x8e, (byte)0xf5, (byte)0x7a, 
        (byte)0x4d, (byte)0x9a, (byte)0xce, (byte)0xf3, 
        (byte)0xbc, (byte)0x8d, (byte)0xab, (byte)0xe2, 
        (byte)0x1a, (byte)0xe1, (byte)0xe3, (byte)0xf6, 
        (byte)0xf0, (byte)0xd3, (byte)0xfe, (byte)0x36, 
        (byte)0x11, (byte)0x11, (byte)0x87, (byte)0x2f, 
        (byte)0x86, (byte)0xcb, (byte)0xe5, (byte)0x52, 
        (byte)0xd3, (byte)0x34, (byte)0xc3, (byte)0x30, 
        (byte)0x5a, (byte)0xad, (byte)0x96, (byte)0xdf, 
        (byte)0xf1, (byte)0xdb, (byte)0xed, (byte)0xf6, 
        (byte)0xd3, (byte)0xcf, (byte)0xe4, (byte)0x41, 
        (byte)0xc6, (byte)0x10, (byte)0xd4, (byte)0xff, 
        (byte)0x01, (byte)0x10, (byte)0x24, (byte)0x35, 
        (byte)0x50, (byte)0x14, (byte)0xbe, (byte)0x20, 
        (byte)0x14, (byte)0x00, (byte)0x00, (byte)0x00, 
        (byte)0x00, (byte)0x49, (byte)0x45, (byte)0x4e, 
        (byte)0x44, (byte)0xae, (byte)0x42, (byte)0x60, 
        (byte)0x82, 
    };

    class Band {
        private NumberedHashtable table;

        class TicketItem {
            // Ticket info
            String name;   // item name i.e. band name
            String seat;   // seat number
            String sect;   // seat section
            String date;   // concert date
            String place;  // concert place
            String state;  // place's state

            // Bid info
            String id;        // id i.e. item number
            String numItem;   // quantity
            String fstBid;    // first bid price
            String curBid;    // current bid price
            String incBid;    // bid increment
            String numBids;   // # of bids
            String endsAt;    // Bid close time

            TicketItem(String name,
                       String seat,
                       String sect,
                       String date,
                       String place,
                       String state,
                       String id,
                       String numItem,
                       String fstBid,
                       String curBid,
                       String incBid,
                       String numBids,
                       String endsAt) {
                this.name = name;
                this.seat = seat;
                this.sect = sect;
                this.date = date;
                this.place = place;
                this.state = state;
                this.id = id;
                this.numItem = numItem;
                this.fstBid = fstBid;
                this.curBid = curBid;
                this.incBid = incBid;
                this.numBids = numBids;
                this.endsAt = endsAt;
            }

            TicketItem(String name) {
                this(name, "n/a", "n/a", "n/a", "n/a", "n/a", 
                     "0", "0", "0", "0", "0", "0", "0");
            }
        }

        class NumberedHashtable { // sort of, but totally different
            private Vector vec = new Vector();
            NumberedHashtable() {
                vec = new Vector();
            }
            void put(int nth, Object obj) {
                Object o = null;
                try { 
                    o = vec.elementAt(nth);
                } catch (ArrayIndexOutOfBoundsException e) {
                    o = null;
                }
                if (o == null) {
                    vec.addElement(obj);
                } else {
                    vec.setElementAt(obj, nth);
                }
            }
            Object get(String name) {
                int num = vec.size();
                for (int i = 0; i < num; i++) {
                    Object obj = vec.elementAt(i);
                    if (obj instanceof Vector) {
                        Vector v = (Vector) obj;
                        TicketItem item = (TicketItem) v.elementAt(0);
                        if (item.name.equals(name)) {
                            return obj;
                        }
                    }
                }
                return null;
            }
            Object elementAt(int index) {
                return vec.elementAt(index);
            }
            void remove(int i) {
                Object o = null;
                try { 
                    o = vec.elementAt(i);
                } catch (ArrayIndexOutOfBoundsException e) {
                    o = null;
                }
                if (o != null) {
                    vec.removeElementAt(i);
                }
            }
            int size() {
                return vec.size();
            }
        }

        Band() {
            table = new NumberedHashtable();
        
            TicketItem t;

            /**
             * 0: Mariah Carey
             */
            t = new TicketItem("\u30de\u30e9\u30a4\u30a2\u30fb\u30ad"
			       + "\u30e3\u30ea\u30fc",
                               "18&19",
                               "XF\u5730\u533a17",
                               "2000\u5e745\u670828\u65e5",
                               "\u5927\u962a\u30c9\u30fc\u30e0",
                               "\u5927\u962a",
                               "7720",
                               "2",
                               "4500",
                               "6900",
                               "100",
                               "3",
                               "11:00 am");
            add(0, "\u30de\u30e9\u30a4\u30a2\u30fb\u30ad\u30e3\u30ea\u30fc", t);

            /**
             * 1: Britney Spears
             */
            t = new TicketItem("Dreams Come True",
                               "10",
                               "F9\u5730\u533aA",
                               "2000\u5e745\u670830\u65e5",
                               "NHK\u30db\u30fc\u30eb",
                               "\u6771\u4eac",
                               "4509",
                               "1",
                               "2000",
                               "2100",
                               "100",
                               "1",
                               "9:45 pm");
            add(1, "Dreams Come True", t);

            t = new TicketItem("Dreams Come True",
                               "69&70",
                               "PIT\u5730\u533a1",
                               "2000\u5e748\u67085\u65e5",
                               "\u4e2d\u91ce\u30b5\u30f3\u30d7\u30e9\u30b6",
                               "\u6771\u4eac",
                               "3058",
                               "2",
                               "900",
                               "17500",
                               "250",
                               "40",
                               "9:00 pm");
            add(1, "Dreams Come True", t);

            t = new TicketItem("Dreams Come True",
                               "5&6&7",
                               "PIT\u5730\u533a11",
                               "2000\u5e748\u67085\u65e5",
                               "\u4e2d\u91ce\u30b5\u30f3\u30d7\u30e9\u30b6",
                               "\u6771\u4eac",
                               "3541",
                               "3",
                               "2800",
                               "9700",
                               "100",
                               "11",
                               "11:15 pm");
            add(1, "Dreams Come True", t);

            /**
             * 2: Ricky Martin
             */
            t = new TicketItem("\u30ea\u30c3\u30ad\u30fc\u30fb\u30de"
			       +"\u30fc\u30c6\u30a3\u30f3",
                               "11&12",
                               "F\u5730\u533aJ",
                               "2000\u5e745\u670811\u65e5",
                               "\u56fd\u7acb\u4ee3\u3005\u6728",
                               "\u6771\u4eac",
                               "3861",
                               "2",
                               "6000",
                               "9000",
                               "500",
                               "3",
                               "6:30 pm");
            add(2, "\u30ea\u30c3\u30ad\u30fc\u30fb\u30de"
		+"\u30fc\u30c6\u30a3\u30f3", t);

            t = new TicketItem("\u30ea\u30c3\u30ad\u30fc\u30fb\u30de"
			       +"\u30fc\u30c6\u30a3\u30f3",
                               "4&6",
                               "N2\u5730\u533a5",
                               "2000\u5e745\u670812\u65e5",
                               "\u795e\u6238\u30ef\u30fc\u30eb\u30c9",
                               "\u5175\u5eab",
                               "9916",
                               "2",
                               "7000",
                               "20000",
                               "1000",
                               "12",
                               "9:30 pm");
            add(2, 
		"\u30ea\u30c3\u30ad\u30fc\u30fb\u30de\u30fc\u30c6\u30a3\u30f3",
		t);

            t = new TicketItem("\u30ea\u30c3\u30ad\u30fc\u30fb\u30de\u30fc"
			       + "\u30c6\u30a3\u30f3",
                               "20&22",
                               "KK\u5730\u533a18",
                               "2000\u5e745\u670814\u65e5",
                               "\u540d\u53e4\u5c4b\u30b0\u30e9\u30f3\u30c9",
                               "\u540d\u53e4\u5c4b",
                               "3869",
                               "2",
                               "7500",
                               "11000",
                               "200",
                               "12",
                               "4:00 pm");
            add(2, "\u30ea\u30c3\u30ad\u30fc\u30fb\u30de\u30fc"
		+"\u30c6\u30a3\u30f3", t);

            /**
             * 3: Tina Turner
             */
            t = new TicketItem("\u30b5\u30b6\u30f3\u30aa\u30fc\u30eb"
			       + "\u30b9\u30bf\u30fc\u30ba",
                               "7 & 8",
                               "NN\u5730\u533a7",
                               "2000\u5e744\u670824\u65e5",
                               "\u6a2a\u6d5c\u30a2\u30ea\u30fc\u30ca",
                               "\u6a2a\u6d5c",
                               "1313",
                               "2",
                               "6000",
                               "6700",
                               "100",
                               "7",
                               "20:25 pm");
            add(3, "\u30b5\u30b6\u30f3\u30aa\u30fc\u30eb\u30b9"
		+ "\u30bf\u30fc\u30ba", t);

            /**
             * 4: Bruce Springsteen
             */
            t = new TicketItem("GLAY",
                               "N&O",
                               "S\u5730\u533a14",
                               "2000\u5e744\u67082\u65e5",
                               "\u5927\u962a\u57ce\u30db\u30fc\u30eb",
                               "\u5927\u962a",
                               "8120",
                               "2",
                               "8000",
                               "12500",
                               "200",
                               "5",
                               "11:30 am");
            add(4, "GLAY", t);

            /**
             * 5: Red Hot Chili Peppers
             */
            t = new TicketItem("\u30ed\u30fc\u30ea\u30f3\u30b0\u30fb\u30b9"
			       + "\u30c8\u30fc\u30f3\u30ba",
                               "3 & 4",
                               "M\u5730\u533a12",
                               "2000\u5e744\u670818\u65e5",
                               "\u6e0b\u8c37\u516c\u4f1a\u5802",
                               "\u6771\u4eac",
                               "2255",
                               "2",
                               "9000",
                               "15000",
                               "100",
                               "7",
                               "7:30 pm");
            add(5, "\u30ed\u30fc\u30ea\u30f3\u30b0\u30fb\u30b9\u30c8"
		+ "\u30fc\u30f3\u30ba", t);
        }

        void add(String name) {
            add(table.size(), name, new TicketItem(name));
        }

        void add(int i, String name) {
            add(i, name, new TicketItem(name));
        }

        void add(int i, String name, TicketItem item) {
            Object obj = table.get(name);
            Vector vec = (obj == null) ? new Vector() : (Vector) obj;
            vec.addElement(item);
            table.put(i, vec);
        }

        void remove(int i) {
            table.remove(i);
        }

        String[] getList() {
            int num = table.size();
            String seq[] = new String[num];
            for (int i = 0; i < num; i++) {
                Vector vec = (Vector) table.elementAt(i);
                TicketItem item = (TicketItem) vec.elementAt(0);
                seq[i] = item.name;
            }
            return seq;
        }

        String getName(int nth) {
            Vector vec = (Vector) table.elementAt(nth);
            if (vec != null) {
                TicketItem item = (TicketItem) vec.elementAt(0);
                if (item != null) {
                    return item.name;
                }
            }
            return null;
        }

        String[] getTicketList(String name) {
            Object obj = table.get(name);
            if (obj == null) {
                return null;
            }

            Vector vec = (Vector) obj;
            int num = vec.size();
            String seq[] = new String[num];

            for (int i = 0; i < num; i++) {
                TicketItem item = (TicketItem) vec.elementAt(i);
                seq[i] = new String(
                    item.id +  "\u756a, " + item.curBid + "\u5186\n" +
                    item.place + "\n" +
                    item.sect + "\u5217\u76ee\n" + item.seat + "\u5e2d...");
            }

            return seq;
        }

        TicketItem getTicketItem(String name, int nth) {
            Object obj = table.get(name);
            if (obj == null) {
                return null;
            }
            Vector vec = (Vector) obj;
            return (TicketItem) vec.elementAt(nth);
        }

        String getTicketID(String name, int nth) {
            TicketItem item = getTicketItem(name, nth);
            if (item == null) {
                return null;
            }
            return item.id;
        }

        String getTicketDataTitle(String name, int nth) {
            TicketItem item = getTicketItem(name, nth);
            if (item == null) {
                return null;
            }
            return "#" + item.id + " " + item.name;
        }

        String getTicketData(String name, int nth) {
            TicketItem item = getTicketItem(name, nth);
            if (item == null) {
                return null;
            }

            return 
                "\u6570\u91cf: " + item.numItem + "\n" + 
                "\u958b\u59cb\u4fa1\u683c:\n" +
                "     " + item.fstBid + "\u5186\n" + 
                "\u73fe\u5728\u306e\u5165\u672d\u984d:\n" +
                "     " + item.curBid + "\u5186\n" + 
                "\u5165\u672d\u6570: " + item.numBids + "\n" + 
                "\u5165\u672d\u7d42\u4e86\u6642\u9593:\n" +
                "    " + item.endsAt + "\n" + 
                "\u5217: " + item.sect + "\n" + 
                "\u5e2d: " + item.seat + "\n" + 
                item.date + "\n" +
                item.place + "," + item.state;
        }

        boolean isTicketData(String bandName, String itemID) {
            return (getTicketItem(bandName, itemID) == null) ? false : true;
        }
        
        TicketItem getTicketItem(String bandName, String itemID) {
            Object obj = table.get(bandName);
            if (obj == null) {
                return null;
            }

            Vector vec = (Vector) obj;
            int num = vec.size();

            for (int i = 0; i < num; i++) {
                TicketItem item = (TicketItem) vec.elementAt(i);
                if (item.id.equals(itemID)) {
                    return item;
                }
            }

            return null;
        }

        String getTicketBidTitle(String bandName, int itemID) {
            TicketItem item = getTicketItem(bandName, itemID);
            long min = stringToLong1000(item.curBid) + 
                stringToLong1000(item.incBid);
            String minBid = long1000ToString(min);

            return 
                "\u73fe\u5728\u306e\u5165\u672d\u984d:\n" +
                "   " + item.curBid + "\u5186\n" +
                "\u5165\u672d\u4e0a\u3052\u5e45:\n" +
                "   " + item.incBid + "\u5186\n" +
                "\u6700\u4f4e\u5165\u672d\u984d:\n" +
                "   " + minBid + "\u5186\n" +
                "\u5165\u672d\u91d1\u984d\u3092\u5165\u529b:";
        }

        String def_ticker = "\u30ea\u30c3\u30ad\u30fc\u30fb\u30de\u30fc\u30c6"
	    + "\u30a3\u30f3 2\u679a 9000\u5186 2\u679a 11000\u5186 2\u679a"
	    + " 20000\u5186\u30b5\u30b6\u30f3\u30aa\u30fc\u30eb\u30b9"
	    + "\u30bf\u30fc\u30ba 2\u679a 6500\u5186";
        String alt_ticker = "\u30d9\u30eb\u30ea\u30f3\u30fb\u30aa\u30fc\u30b1"
	    + "\u30b9\u30c8\u30e9 2\u679a 5800\u5186 4\u679a 11500\u5186 "
	    + "\uff13\u5927\u30c6\u30ce\u30fc\u30eb 2\u679a 3700\u5186";

        String toTickerString(boolean[] selected) {
            String s = "";

            if (selected == null) {
                return alt_ticker;
            }

            // My Bands
            if (selected[0]) {
                s += def_ticker;
            }
            // Pop
            if (selected[1]) {
            }
            // Rock
            if (selected[2]) {
            }
            // Alternative
            if (selected[3]) {
                if (s.length() > 0) {
                    s += " ";
                }
                s += alt_ticker;
            }
            // Jazz
            if (selected[4]) {
            }
            // Classical
            if (selected[5]) {
            }

            return s;
        }

        long stringToLong1000(String s) {
            if (s == null || s.equals("")) {
                return 0;
            }
            try {
                int index = s.indexOf('.');
                if (index == -1)
                    return (long)1000*Integer.parseInt(s);

                long integerPart = 1000*Integer.parseInt(s.substring(0, index));
                String fracString = s.substring(index+1);
                int multBy = 0;
                switch (fracString.length()) {
                case 0:
                    multBy = 0;
                    break;
                case 1:
                    multBy = 100;
                    break;
                case 2:
                    multBy = 10;
                    break;
                case 3:
                    multBy = 1;
                    break;
                }

                long fractionalPart = multBy * Integer.parseInt(fracString);
                return integerPart + fractionalPart;
            } catch (NumberFormatException nfe) {
                return 0;
            }
        }

        String long1000ToString(long l) {
            if (l == 0)
                return "0";
            String s = String.valueOf(l);
            if (s.length() < 4)
                return "0";
            String newStr = s.substring(0, s.length()-3) +"."+ 
                s.substring(s.length()-2);
            return newStr;
        }
    }
}

